1 python中的数据类型:数字(整数型 int , 浮点数型 float, 布尔型 bool , 复数 complex ),字符串,元组(只读列表,只能查询,不可更改),集合,列表,字典
可变数据类型:列表list[ ]、字典dict{ } 数据发生改变,但内存地址不变
不可变数据类型:整型int、字符串str’ '、元组tuple() 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会改变
2 有一段python的编码程序如下:urllib.quote(line.decode(“gbk”).encode(“utf-16”)),请问经过该编码的字符串的解码顺序是
url解码 utf16 gbk
3 一种统计素数个数的方法
import math
def sieve(size):
# 初始化一个待判断统计列表,用于表示该位置的索引是否为素数
sieve = [True] * size
# 众所周知,0和1都不是素数,所以为False
sieve[0] = False
sieve[1] = False
# 循环找到所有的非素数,赋值False
for i in range(2, int(math.sqrt(size)) + 1):
k = i * 2
while k < size:
sieve[k] = False
k += i
# 统计所有为True的元素个数,也就是素数的个数
return sum(1 for x in sieve if x)
# 一千亿之内的素数个数
# 4118054813
print(sieve(100000000000))
4 python中主要存在四种命名方式:
1、object #公用方法
2、_object #半保护
#被看作是“protect”,意思是只有类对象和子类对象自己能访问到这些变量, 在模块或类外不可以使用,不能用’from module import *’导入。
#
object 是为了避免与子类的方法名称冲突, 对于该标识符描述的方法,父类的方法不能轻易地被子类的方法覆盖,他们的名字实际上是
classname__methodname。
3、
_ object #全私有,全保护
#私有成员“private”,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据,不能用’from module import *’导入。
4、
_ object
_ #内建方法,用户不要这样定义 前后双下划线的命名方式用于python里的特殊方法。
5 a = ‘123’
b = ‘123’
a is b a,b为字符串不可变类型,所以指向相同地址,所以 a is b is指地址相同
内容相同
123是int类型,而a的值为字符a+b=‘123123’ a
"123"
6 Python定义参数
python函数的几种参数可以任意组合,但必须按顺序写,否则会报错,顺序为(位置参数,默认参数,可变参数,命名关键字参数,关键字参数)
位置参数 def fn1(a): def fn2(a,b):
默认参数 def enroll(name, gender,
age=6, city=‘Beijing’
): 默认参数必须指向不变对象!
可变参数 传入参数的个数是可变的 *args是可变参数,args接收的是一个tuple;
关键字参数 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。 **kw是关键字参数,kw接收的是一个dict。
命名关键字参数 如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。
def f1(a, b, c=0, *args, **kw):
7
x = 1
def change(a):
x += 1
print x
change(x) 报错 change(a) 函数内的局部变量 x 在使用前未定义。
8 Python中的闭包
在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。
一般情况下,如果一个函数结束,函数的内部所有东西都会释放掉,还给内存,局部变量都会消失。但是闭包是一种特殊情况,如果外函数在结束的时候发现有自己的临时变量将来会在内部函数中用到,就把这个临时变量绑定给了内部函数,然后自己再结束。
#闭包函数的实例
# outer是外部函数 a和b都是外函数的临时变量
def outer( a ):
b = 10
# inner是内函数
def inner():
#在内函数中 用到了外函数的临时变量
print(a+b)
# 外函数的返回值是内函数的引用
return inner
if __name__ == '__main__':
# 在这里我们调用外函数传入参数5
#此时外函数两个临时变量 a是5 b是10 ,并创建了内函数,然后把内函数的引用返回存给了demo
# 外函数结束的时候发现内部函数将会用到自己的临时变量,这两个临时变量就不会释放,会绑定给这个内部函数
demo = outer(5)
# 我们调用内部函数,看一看内部函数是不是能使用外部函数的临时变量
# demo存了外函数的返回值,也就是inner函数的引用,这里相当于执行inner函数
demo() # 15
demo2 = outer(7)
demo2()#17
在基本的python语法当中,一个函数可以随意读取全局数据,但是要修改全局数据的时候有两种方法:1 global 声明全局变量 2 全局变量是可变类型数据的时候可以修改。在闭包内函数也是类似的情况。在内函数中想修改闭包变量(外函数绑定给内函数的局部变量)的时候:
在python3中,可以用nonlocal 关键字声明 一个变量, 表示这个变量不是局部变量空间的变量,需要向上一层变量空间找这个变量。
#修改闭包变量的实例
# outer是外部函数 a和b都是外函数的临时变量
def outer( a ):
b = 10 # a和b都是闭包变量
# inner是内函数
def inner():
#内函数中想修改闭包变量
#nonlocal关键字声明
nonlocal b
b+=1
# 外函数的返回值是内函数的引用
return inner
if __name__ == '__main__':
demo = outer(5)
demo() # 6 11
8 正则表达式
正则表达式也叫做匹配模式(Pattern),它由一组具有特定含义的字符串组成,通常用于匹配和替换文本。
re模块 廖雪峰
9 python my.py v1 v2 命令运行脚本,通过 from sys import argv如何获得v2的参数值?
argv[2] sys.argv是命令参数表,包括文件名 argv[0]为该脚本自身路径,其余为命令行参数
10
1)解释性语言:
运行一句代码,就翻译一句,因此效率比较低。常见的解释性语言:javascript、matlab、python 非独立 效率低
2)编译性语言:
先一次性的将代码翻译成机器语言,形成一个执行文件。运行时就直接调用执行文件,因此效率比较高。常见的编译性语言:c,Object-C,c++,c#,java