###### Chapter 3 变量与函数 Variables and Functions##########
####变量:标签 物理空间存储的位置 调用的时候会指向“门牌号”
x = 5
print(x)
print(x*2)
y = 10
print(y - 2)
y = True##布尔类型
print(y)
#新的值会覆盖掉旧的值!!!
#新值的数据类型不必与旧值相同
## 变量命名规则:
#必须以字母或下划线(_)开头
#命名可由字母、数字和下划线组成
#大小写敏感!!!!!
#尽量避免使用保留字命名'False','None','True','__peg_parser__''and',as',
numberOfRabbits = 40
courseIs15112 = True
import keyword
keyword.kwlist ##保留字
print(keyword.kwlist)
#更新变量
x = 5
x += 2 # 等价于 x = x + 2
print(x) # 7
# 换成其他运算符也是同理
y = 350
y //= 10
print(y) # 35
## 多变量赋值
a = b = c = 2
print(f"a={a}, b={b}, c={c}")
a, b, c = 1, 2, 6 ###元组的解包
print(f"a={a}, b={b}, c={c}")
# 函数 Functions
# 函数是一个名字,代表一串代码序列(流程、过程)
# 函数由两个部分组成:header 和 body
# header 用于定义函数接口(函数名称与参数)
###当函数被调用时,参数将会作为变量被提供给函数的
###部分body可以提供多个参数(用逗号 分隔),也可以不提供参数(0 个)
###header 以冒号()结尾,代表后面会跟着 部分:body
# body 包含函数所需要执行的语句()statement
###语句需要缩进(由 Code Style Guide 决定)
###当语句不再缩进,函数部分结束
###一般会使用 语句,来让函数返回其结果,但不是必须的return
###类似于用一个 来对多个变量赋值,函数的返回结果也可以不止一个(用逗号 分隔)=,
def functionName(parameters):
pass # 函数的 body 部分,这里使用 pass 代替
def double(x):
print("double函数输出x*2:",2*x)
return 2 * x ###可以不return
print(double(2))
print(double(1) + 3)
# 三个参数
def f(x, y, z):
return x + y + z
print(f(1, 3, 2)) # 返回 6
# 无参数 调用的时候不能输入参数
def g():
return 42
print(g()+1) # 返回 43
#多返回值
def Multi_Return_Values():
return 9, 2, 8
a, b, c = Multi_Return_Values()
print(f"a={a}, b={b}, c={c}")
###语句与表达式 Statements and Expressions
##对于表达式 它本身是值 它的计算结果是值
##对于语句 它不是值 它不能打印 但它能执行一些操作
print(4)
print("Hello World")
print(7 + 2)
print( False or True)
print((2 < 3) and (9 > 0))
#####内置函数 Builtin Functions
print(bool(0)) #False # 转换为布尔类型(True or False)
print(bool(1)) #True
print(bool(-1)) #True
print(float(42)) # 转换为浮点数
print(int(2.8)) # 转换为一个整数(舍弃小数点)
##一些基本数学函数不在库中math
print(abs(-5)) # 绝对值
print(max(2,3)) # 返回最大值
print(min(2,3)) # 返回最小值
print(pow(2,10)) # 次方运算,等价于 2**10
print(round(2.354, 2)) # 取最近的一个整数(并不完全是四舍五入,二进制精度丢失)
###变量作用域 Variable Scope
#每个变量都有属于自己的作用范围 超出作用范围后,变量不可见
def f(x):
print("x:", x)
y = 5 ####局部变量,不在全局变量;内部的改变不影响外部。
print("y:", y)
print("x+y:")
return x + y
print(f(4))
print(x) # crash!
print(y) # crash!找的是全局变量,此时输出的是前面赋值的全局变量
##函数内的变量具有局部作用域,它只存在于函数内部,与其他函数中的同名变量无关
def f(x):
print("In f, x =", x)###x=4
x += 5
return x
def g(x): #### in g, x=2
y = f(x*2) ##### in f ,x=4
print("In g, x =", x)
z = f(x*3) #### in f,x=6
print("In g, x =", x)
return y + z ##y=9,z=11
print(g(2)) #给定x=2
from IPython.display import IFrame
#IFrame('https://nbviewer.org/github')链接暂时不完整
def f(x):
print("In f, x =", x)
x += 7
return round(x / 3)##四舍五入3
def g(x): #6
x *= 10
return 2 * f(x)
def h(x):
x += 3
return f(x+4) + g(x) # 6+44
print(h(f(1)))#50
#函数外部定义变量时,变量具有全局作用域,在任何地方都可以使用
#尽量避免使用全局变量,但是在非常少的一些场合会需要用到它
g = 100
def f(x):
# 如果想要修改 g 的值,必须声明它是全局变量
# 否则 Python 会假设它是局部变量
global g
g += 1 #101
return x + g
print(f(5)) # 105 101+5
print(f(6)) # 106 102+6
print(g) # 100 102
##返回语句 Return Statements
def isPositive(x):
return (x > 0)
print(isPositive(5)) # True
print(isPositive(-5)) # False
print(isPositive(0)) # False
def isPositive(x):
print("Hello!") # 会运行
return (x > 0) #遇到return就会结束
print("Goodbye!") # 不会运行
print(isPositive(5)) # 输出 “Hello!” 然后返回 True
#没有返回语句的时候,函数会返回 None
def f(x):
x + 42
print(f(5)) # None
def f(x):
result = x + 42
print(f(5)) # None
### 函数中 Print versus Return
def cubed(x):
print(x**3) # 这里的操作不太合适
cubed(2) #8 但是似乎看起来也正常运行了
print(cubed(3)) # 27 应该也能有效(但是返回 None,太怪了)
#print(2*cubed(4)) # Error!
def cubed(x):
return (x**3) # 这样做更好
cubed(2) #输出被忽略了
print(cubed(3)) #27有效了
print(2*cubed(4)) #128也是有效的
##用return需要print(f())
#函数组合 Function Composition
#对于嵌套的函数而言,应该最先运行最内层的函数
def f(w):
return 10*w
def g(x, y):
return f(3*x) + y #在我们返回它之前,我们必须先执行 f(3*x)
def h(z):
return f(g(z, f(z+1))) # 最内部的 f(z+1) 必须先执行
print(h(1)) # z=1 f(2)=20 g(1,20)=f(3)+20=50 f(50)=500
#### Helper Functions编写函数是用来解决问题的
#可以编写函数来存储那些经常被用到的一系列操作
def onesDigit(n):
return n%10##返回个位数
def largerOnesDigit(x, y):
return max(onesDigit(x), onesDigit(y))
##找到最大的个位数
print(largerOnesDigit(134, 672)) # 4
print(largerOnesDigit(132, 674)) # 4
###总结
#变量只是个标签,物理设备上的位置才是重点
#函数定义:、header、body、缩进、defreturn
#函数是有作用域的,类似双层玻璃,里面可以看见外面,外面不能看见里面
#Helper Function 有时候会很有用
Python基础03变量与函数
于 2024-04-20 15:47:25 首次发布
本文详细介绍了Python中的变量、函数概念,包括变量的存储位置、命名规则、更新机制,以及函数的定义、参数传递、返回值、作用域和函数组合的运用。还探讨了表达式与内置函数,以及如何使用HelperFunctions优化代码。
摘要由CSDN通过智能技术生成