默认教学计划
929人加入学习
(28人评价)
Python 基础
价格 ¥ 299.00
该课程属于 高校公益行 | 网络安全实践训练营 请加入后再学习

运行shell文件:   bash  sh csh   +文件名

运行pyhon文件:python +文件名

交互模式:〉〉〉

交互模式下比起文本模式,会有如下特点:

1文本前面不能有空格,否则会报错

2复合语句中第二行开始提示符会变成“。。。”

3用一个空行便是符合语句结束

 

#!/usr/bin/env python

标示符:有字母、数字、下划线组成,但不能以数字开头。

“”''

#注释

[展开全文]

Python的类型与运算-数字(二)

运算符应用

类型升级

    导入分数模块:from fractions import Fraction

    整数等级最低

    只能应用于整数的运算符:位运算符,逻辑运算符,身份运算符。

基本数学函数

数学函数的应用

    • bin,oct,hex
    这些函数是需要转换进制的时候使用从10进制转化为其他进制

    • float把整数转化为浮点数

    • int这个是从别的进制的文本转化为Python里的数值时使用,也支持浮点数转化为整数,是把小数部分扔掉。

    • pow:幂函数,功能与运算符**一样。

    • sqrt:取当前数的平方根

    • max:最大值与min:最小值

    • abs与fabs:取绝对值。同样是取绝对值,但是fabs函数取出来的是浮点数,abs可以保持原有的数字类型。

    • Decimal模块:在使用浮点数的时候,因为计算机里是使用二进制来表示,所以会出现精度问题,当金融行业等不许出现一丝问题的时候,我们会使用Decimal模块来解决精度问题。

    • 格式化输出-format:使用bin(),oct(),hex()的时候会发现前面会加0b,0o,0x。我们不想要前缀的时候可以
使用format函数来解决。

    cmp:在Python 2.x里提供了很好的比较函数: cmp(),当前面的数值小,结果是-1;一样的时候结果为0,前面的数值大的时候结果为1。但是Python 3.x里很可惜舍弃了这个函数。

    random:在Python 里提供了很好的随机函数使用的模块。

    • modf:此函数是把浮点数的整数位和小数位单独取出来。

    • log:此函数为指数函数。默认e为底数,结果为浮点数。log10以10为底数。可以自定义底数。

[展开全文]

建议学习2.7版本

优点:语法简洁,高可读性,开发效率高,可移植,支持自行开发或第三方模块,可调用c和c++库,可与java组建集成

缺点:速度不快(脚本)

使用场景:系统编程,用户图形接口,internet脚本,数据库编程,快速原型,数值计算和科学计算编程,游戏、图像、人工智能、XML、机器人等

[展开全文]

    python2为了正常使用中文,可以在脚本的开头加上语句:#-*-encoding=utf8-*-来所有的字符串方式都转换为utf8的方式.

    len():用来看字符串的长度。

    在用for语句时,要记得缩进,不然会报错(前面加上先执行语句:from __future__ import print_function)。

    string[a:b:c]表示提取从a开始到b的字符串。(最后一个参数可有可无,表示每c个字符显示一个)。

   ord():把一个字符串转换位数字。

   chr():把单个数字转换为字符。

[展开全文]

open(r"file_address", access_mode)打开

py2默认二进制打开

py3默认unicode方式打开

 

r :读             rb :二进制读

w :重写            wb : 二进制重写

a :追加          ab :二进制追加

flush   close()刷新文件操作

 

file.read()读取文件file

file.tell()   获取 读取文件后指针的位置

file.readline()   按行读取

file.readlines()  按行读取,返回list,每行就是元素

file.seek(x,0/1/2)   偏移指针读取

 

file.write("sddf")   写入file

file.write( list )      写入列表

 

 

[展开全文]

读取压缩文件:

    import gzip

    import bz2

    gzip.open("file_address",'wt')

    bz2.open('file_address','wt')

py2

   bz2.BZ2File('file_address','w')  

[展开全文]

集合 

   无序,不可重复的

py2  set(list)

py3 _set()

  list2

list1 = list2    引用

list1 = list2[ : ]    复制

对象的比较  : is  

list1 is list2  表示同一个对象的引用,即true

list1 == list2   比较两个列表的值

无限循环:

   l = ['l'];

   l.append('l')

   l[1][1][1]

 

[展开全文]

分数模块导入:from fractions import Fraction

位运算符只能用于整数('&,|,^,<<,>>')

pow幂函数  sqrt平方根

math导入:import math

取绝对值:abs ,fabs(取出的绝对值为一个浮点类型)

random随机数函数

 

[展开全文]

Python的类型与运算-动态类型简介

变量、对象、引用、共享引用。

    变量:在Python里,不像别的一些语言,需要声明变量类型。因为在Python里变量没有类型。

    变量是存放指针的,因此变量没有类型。
    对象是存放数据的,所以对象有类型之说。

    对象回收:因为对象是独立于变量的,当不再使用的时候是得回收的。

    在Python里两个变量可以共享一个对象,这个叫做共享引用。

    == 表示测试两个值是否相等。

    is 表示两个值是否是同一对象。

    在Python里多个变量引用同一整数,字符串的时候,会引用同一对象。但是其他时候,在Python里给两个变量赋予同样值的对象,其对象不是共用的。

    需要了解一个对象被引用多少次,可以使用如下函数来查看:
    import sys
    sys.getrefcount(1)

 

[展开全文]

序列赋值:

   a = 1

   b = 2

   b,a = a,b

a,b 值互换

a ,*b ,c = 1, 2, 3, 5,4

a =1     b = [2,3,5]   c = 4

a = b = c = "myvalues"

a is b    b is c     : true

 

[展开全文]

 

36位1-9,a-z

//留整数,3//6结果为0

<>不等于

先对a的补码取反再显示它的补码

1 is 1完全相同才真

 

 

 

[展开全文]

list.insert(2,'')

.pop(2)

del list[0]

del list[1:]删除切片

list2=sorted(list)会生成一个新的列表

sorted([x.lower() for x in list],reverse=True)

info=['name',18,[1997,9,7]]

_name,_age,_birth=info

可以这样赋值

也可以

_name,_age,(_birth_y,_birth_m,_birth_d)=info

_开头防止和系统变量重名

py3 *_a可以存放后面多个,形成一个列表

这多个变量中只有一个可以带*

from collections import deque

q=deque(maxlen=5)

可以设置最长长度

再加会将第一个除掉

.appendleft(1)会除掉最右的应为设置了maxlen

min(l)

max()

from heapq import nlargest,nsmallest

nlargest(3,list)可以着最大3个

sum(list)可以算总值

为切片命名

_slice1=slice(1,3)slice是一个函数

from collections import Counter

计算重复数

counter_list=Counter(list)

会形成一个元组列举出每个元素的重复数

counter_list.most_common(2)

会列举出最多的两个

可以用counter_list.update(['a','a','b'])来更新

 

 

[展开全文]

from fractions import Fraction

import Fraction不行

导入后才能用

整<fraction<浮点<complex

移位只能用于整数

1 and 2 ->2第二个数字

0 and 2 ->0

0 or 3  ->3非零的

3 or 2 ->第一个数字

在cmd中打powershell可以进入ps

float(Fraction(4,5)) is 08 是false

type(float(Fraction(4,5))

x<y>z x<y and y<z有false不继续

int(1.9)=1

import math

from math import *

abs(-10)=10

math.fabs(-10)=10.0

round四舍五入

3是靠近偶数四舍五入

math.ceil(1.5)=2

random.random()从0到1之间取

random.choise((1,2)) or ([])

random.sample((1,2),个数)

结果为列表

random.shuffle洗牌

()元组,[]列表,打乱只能用列表

n位二进制随机数

random.getrandbits(个数n)

math.modf(2.5)分离

用Decimal更准确地进行浮点数运算

format除去输出的进制头

 

 

 

[展开全文]

实参,形参

 

list  改变函数的可变对象参数的值  也许会对调用者有影响

不可变对象“传值”:数值、字符串

可变对象“指针”:列表、字典

    

 

[展开全文]

isinstance(i,list)    i是list类型   true

isinstance是Python中的一个内建函数。是用来判断一个对象的变量类型

 

lambda a:a*a

传递a,返回a*a

funclist = [lambda x : x**2,

                  lambda x : x**3,

                   lambda x : x**4 ]

funclist[0](3)  

>>>9            调用第一个,计算结果

funclist[1](3)

>>>29           调用第二个,计算结果

[展开全文]

Python的语句与语法-语句简介

• Python的语句
• Python的语句格式
• Python的缩进
• 对用户输入数据的判断
• 处理错误

    在Python里是不使用{}或者别的符号来限制语句的开始和结尾的。
    一个语句的开始(除了复合语句),就是开头,换行就是结束。
    在开头,不能随意增加空格。

    关于严格控制,在复合语句里也是同样的。当你使用缩进时,必须一致。

    复合语句,有单行写法和多行写法。从冒号后面就是复合语句的开始。
    单行:复合语句里只有一行时,可使用单行写法。

    但是,复合语句所包涵的语句不是单行时,需要使用对其的缩进来表示复合语句。

    在Python里,复合语句是使用严格的缩进对齐来表示同一层次。
    缩进可使用1个以上的空格或者制表符(tab),具体数量没有严格限制,但必须对齐。

    当我们所写的语句有bug,会出现一些错误,程序会中断运行。但我们在这个时候,不想让程序冲断但还是需要提示错误的时候可以使用try。

 

[展开全文]

Python的函数-函数基础

• 函数简介
• 函数相关的语句和表达式
• 编写函数
• def语句
• Python函数中的多态
• 本地变量

    函数是将一些语句集合在一起的部件,它们能够不止一次地在程序中运行。函数还能计算出一个返回值,并能够改变作为函数输入的参数,而这些参数在代码运行时也许没次都不相同。

总结使用函数的意义:
最大化代码重用和最小化代码冗余。
流程的分解。

函数相关语句和表达式:

calls:调用函数

def:定义函数

编写函数
   def是可执行的代码。在Python里,只有def执行之后,才会生成相应的函数。要是def没有执行,相应的函数就不会生成。def语句在if、while语句甚至是其它def语句里也是合法的。
    def创建了一个对象,并将其赋值给一个变量。def语句是生成一个函数对象,并将其赋值给函数名变量。其实与赋值相同。
    lambda创建一个函数对象发送给调用者。因此,也可使用lambda表达式创建函数,这一功能允许我们把函数定义内联到语法上一条def语句不能工作的地方。
    return将一个结果对象返回给调用者。这个返回值成为函数调用的结果。
    yield向调用者返回一个结果对象,但是记住它离开的地方。

    global声明了一个模块级的变量并被赋值。在默认情况下,所有在函数内被赋值
的变量,是在这个函数里的本地变量,并仅在函数函数运行过程中存在。为分配一个可以在整个模块中都可以使用的变量名,函数需要在global语句中列举出来。
    nonlocal声明了将要赋值的一个封闭的函数变量。Python3.x里才有的语句。函数里嵌套函数时,都使用相同变量名时,只想继承上一个函数里的相同变量时可以使用。
    函数是通过赋值(对象引用)传递的。参数是通过赋值传递的。但是,在Python中赋值就是对象引用。因此当参数被传递的对象为可变对象(列表、字典等),当对参数进行变更时,会影响到被传递进来的变量(变量所引用的对象)。
    参数、返回值以及变量并不是声明。这个与其它变量相同,不需要提前声明,
或者说是没有任何类型。

 

[展开全文]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

Python的函数-作用域

• Python作用域基础
• 作用域法则
• global语句
• 作用域与嵌套语句
• nonlocal语句

作用域针对的是变量。在使用同一个变量名时,会出现作用域问题。

• 一个def内定义的变量名能够被def内部使用。不能在函数外部引用这个变量名。
• def内的变量名与def外的变量名并不冲突。在def内赋值的与def外赋值的相同变量名是不同的变量。
变量名有如下三种不同作用域:
1. 全局:在def外定义的变量名是全局变量
2. 本地:在def内部定义的叫做本地变量
3. 其它:嵌套def时,各自的变量也是独立的。
def myfunc1():
x = 1
def myfunc2():
x = 2

作用域法则
内嵌的模块是全局作用域
全局作用域的作用范围仅限于单个文件
每次的函数的调用都创建了一个新的本地作用域
赋值的变量名除非声明全局变量或非本地变量(Python3.x有非本地变量说法),否则均为本地变量。
所有其它的变量名都可以归纳为本地、全局或者内置。
变量名使用时,查找顺序:LEGB
L:本地变量名 - 在本地是否使用此变量名赋值过。
E:上一层结构中def或lambda的本地变量名 - 上一层是否使用此变量名赋值过。
G:全局变量名 - 在整个文件里是否对变量名赋值过。
B:内置变量名 - Python内部是否存在此变量名。
要是都找不到相应变量名,就会报错。

global语句
在函数内,想改变全局变量,可以使用global语句来定义此变量为全局变量。

工厂函数为:根据要求的对象,一个能够记住嵌套作用域的变量值的函数。这种功能,使用类可以更好的实现,但使用函数也能简单现。

 

[展开全文]