关键字:变量,函数,语句,表达式,内置函数,变量作用域,返回语句,函数组合,Helper Functions
变量
- 使用
=赋值变量 - 新的值会覆盖掉旧的值
- 新值数据类型不必同于旧值(与C语言不同)
- 变量
=值,在python中,变量是一个标签,对地址的标签,不是一个“盒子”,详见拓展知识1 - 命名规则 字母或者_开头,字母数字下划线组成,大小写敏感,尽量避免使用保留字,可以用下列代码查看保留字
import keyword
keyword.kwlist
- 更新变量
a = a+1a += 1 - 多变量赋值
a,b,c = 1,2,6
函数
- header(signature): 定义接口(名称和参数)
- body: 操作
def <name>(<formal parameter>):#head,可以有任意多参数也可以没有
pass#body部分,使用pass代替,需要缩进
#可以return返回值,不是必须,可以多返回如return 9,2,8可以运用在多变量赋值中
- 使用函数名调用函数,调用的函数后对其直接做运算,参数数目应匹配
语句与表达式
- 表达式本身是值或者计算结果是值
- 语句不是值,不能被打印,用来执行一些操作
- 能
print的是表达式
内置函数
- 类型转换
bool()1true0false,这里的1可以是任何大于0的数
print(bool(3))
#True
float() int()
- 一些基本数学函数(但不在
math库里)
abs() # 绝对值
max() #返回最大值
min() #返回最小值
pow(a,b) #a**b
round(a,b) #对a保留b位小数,但不完全是四舍五入,二进制精度丢失,还是浮点误差的问题
变量作用域
- 每个变量都有属于自己的作用范围
- 超出作用范围后,变量不可见
- 函数内部定义的变量都是局部变量,具有局部作用域,它只存在于函数内部,与其他函数中的同名变量无关(个人理解:用完销毁,一次性使用)
from IPython.display import IFrame
IFrame('https://pythontutor.com/render.html#code=def%20f%28x%29%3A%0A%20%20%20%20print%28%22In%20f,%20x%20%3D%22,%20x%29%0A%20%20%20%20x%20%2B%3D%205%0A%20%20%20%20return%20x%0A%0Adef%20g%28x%29%3A%0A%20%20%20%20y%20%3D%20f%28x*2%29%0A%20%20%20%20print%28%22In%20g,%20x%20%3D%22,%20x%29%0A%20%20%20%20z%20%3D%20f%28x*3%29%0A%20%20%20%20print%28%22In%20g,%20x%20%3D%22,%20x%29%0A%20%20%20%20return%20y%20%2B%20z%0A%0Aprint%28g%282%29%29&cumulative=false&curInstr=0&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false', width=1300, height=600)
- 在函数外部定义变量时,变量为全局变量,具有全局作用域,在任何地方都可以使用
尽量避免使用全局变量,但是在非常少的一些场合你会需要用到它
如果想在函数内修改全局变量,需要声明其为全局变量,即在变量前加
global - 可以通过缩进来辅助判断是内部变量还是外部变量
返回语句
return只能return表达式return要在函数内部- 一旦执行
return,函数立即结束 return缺省时返回None
函数组合
- 嵌套的函数先运行最内层的
- 递归思想
Helper Functions
- 编写函数来存储那些经常被用到的一系列操作
- 运用Unix哲学的逻辑:每个工具做好一件事
拓展知识
- 《流畅的python》6.2变量不是盒子
- 元组的解包
- 代码可视化工具Python compiler - visualize, debug, get AI help from ChatGPT (pythontutor.com) 亲眼看自己的代码是怎么跑起来的
print()与return:print()是打印,return返回给调用者函数的结果- Unix哲学基础 | 熊大叔 (xiongotom.github.io)
- 递归 & 分治 - OI Wiki (oi-wiki.org)
- Teach Yourself Computer Science (teachyourselfcs.com)
- Get your hand dirty!