学习总结 03

98 阅读3分钟

关键字:变量,函数,语句,表达式,内置函数,变量作用域,返回语句,函数组合,Helper Functions

变量

  • 使用 =赋值变量
  • 新的值会覆盖掉旧的值
  • 新值数据类型不必同于旧值(与C语言不同)
  • 变量 = 值,在python中,变量是一个标签,对地址的标签,不是一个“盒子”,详见拓展知识1
  • 命名规则 字母或者_开头,字母数字下划线组成,大小写敏感,尽量避免使用保留字,可以用下列代码查看保留字
import keyword
keyword.kwlist
  • 更新变量a = a+1 a += 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哲学的逻辑:每个工具做好一件事

拓展知识

  1. 《流畅的python》6.2变量不是盒子
  2. 元组的解包
  3. 代码可视化工具Python compiler - visualize, debug, get AI help from ChatGPT (pythontutor.com) 亲眼看自己的代码是怎么跑起来的
  4. print()returnprint()是打印,return返回给调用者函数的结果
  5. Unix哲学基础 | 熊大叔 (xiongotom.github.io)
  6. 递归 & 分治 - OI Wiki (oi-wiki.org)
  7. Teach Yourself Computer Science (teachyourselfcs.com)
  8. Get your hand dirty!