Python Careful¶
关于局部变量和全局变量¶
在函数内部或代码块内是可以访问全局变量的,但是是以只读形式访问的,若不加 global 关键字 那么是不能对其进行修改的,若对全局变量进行赋值,默认是会创建一个新的同名局部变量的
而且 在一个代码块内部,如果有新声明的新同名变量,那么就算在其前面也是不能访问到外部的 全局变量的,此时若进行访问,会报错
var = 1
def func():
print(var) # ok 1
var = 1
def func():
print(var) # not ok referenced before assignment
var = 4
var = 1
def func():
var = 4
print(var) # ok 4
var = 1
def func():
global var
print(var) # ok 1
var = 4
print(var) # ok 4
print(var) # ok 4
注意函数返回的数据类型¶
- 注意是 list 还是 生成器
- 注意是 list/tuple 还是 单个变量
Python 很注重惰性计算,所以很多函数,方法返回的是 生成器 或者 map 类型,有些时候需要 转换 为 list tuple 等再进行使用
例如 plt.plot(...) 就返回一个 plot 对象的 list, 原因大概是可以这样写 plt.plot(x, y, x, z)
单元素 list tuple 的注意事项¶
很多函数可能需要返回多个值,所以就会返回 tuple 作为数据类型,但很多时候其返回的 tuple 中又只有一个元素,此时就加逗号咯
line, = ax.plot(Data[0, 0], Data[0, 1],color = 'red',lw = 1.5, label = 'Pos')
类似这样
有时候我们也需要返回一个 tuple 但只有一个元素,所以加逗号咯
def func():
something()
return res,
python 中的代码块¶
if 语句不会产生代码块,也就是不会生成新的变量空间,这点和其他语言不太一样