版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/irving512/article/details/78119192
1. 模块
1.1. 从某模块导入函数
import somemodule
from somemodule import somefunction
from somemodule import somefunction, anotherfunction, yetanotherfunction
from some module import *
# 若两个模块拥有相同名称的函数
import somemodule1
import somemodule2
somemodule1.somefuntion()
somemodule2.somefuntion()
2. 赋值
# 多个赋值操作同时进行
x, y, z = 1, 2, 3
# 可以直接用作交换变量
x, y = y, x
# 本质过程,序列解包
values = y, x
x, y = values
# 链式赋值
x = y = somefuntion()
3. 条件
- 会被看成假(False)的值:
False, None, 0, "", (), [], {}
- ==,值相等,等价于Java中的equals
- is,同一性运算符,等价于Java中的==
- in,成员资格运算符
- 字符串根据字典序排列,大小写敏感
- 序列比较
- 比较对应元素(要求对应元素必须可比较)
- 若序列长度不同,先比较开始的元素,若所有元素相同,则长度大的序列>长度小的序列
- 布尔运算符:
and or not
,短路运算。 - 断言:
assert
4. 循环
range
与xrange
的区别:
range
生成序列xrange
生成一个数
zip
函数:
- 把两个序列压缩在一起,返回一个元组列表。
- 可以处理长度不同的序列,短的序列用完时停止。
enumerate
函数:提供索引与值的key-value对。- 循环的
else
语句:在没有调用break的时候执行。
for i in range(1, 10):
if i % 5 == 0:
break
else:
print('didn't find it')
- 列表推导式:利用其他列表创建新列表
[x*x for x in range(10)]
[x*x for x in range(10) if x % 3 == 0]
[(x, y) for x in range(3) for y in range(3)]
5. 函数
5.1. 形参
- 可以有关键字
- 可以有默认值
- 由于可以有关键字、有默认值,所以不需要重载(与Java相比)
*
与**
形参
*
形参用于获取任意多个参数(非关键字参数,格式为元组)**
形参 用于获取任意多个关键字参数(格式为字典)*
必须在**
之前。- 实参列表不能任意,必须为:定义的参数,任意多的非关键字参数,任意多的关键字参数,否则报错。
*
/**
还可以用在将序列/字典转换为实参。
def func(c='1'): print(c)
func(**{'c':'123'})#输出结果为123
def add(a, b): print(a+b)
add(*(1,2)) # 输出3
5.2. 作用域
# 查看当前作用域内的参数
vars()
# 查看全局作用域参数
global()
a = 1
b = 2
def func():
a = 3
print(a) # 局部变量覆盖全局变量
print(global()['a']) # 调用全局变量
print(b) # 直接调用全局变量
global c # 在局部作用域内新建全局变量
c = 3