一.变量
变量是一个名字,代指一段数据,使用 = 对这段数据的区域进行赋值。
新的值会覆盖旧的值,新值的数据类型不必与旧值相同。
变量命名规则:
- 必须以字母或下划线(_)开头
- 命名可由字母、数字和下划线组成
- 大小写敏感
- 尽量避免使用保留字命名
# 1. 必须以字母或下划线开头
_a = 1 # OK
9x = 10 # ❌ SyntaxError: invalid decimal literal
# 2. 可由字母、数字、下划线组成
name2 = "Tom" # OK
first-name = 1 # ❌ SyntaxError: can't use hyphen
# 3. 大小写敏感
apple = 1
Apple = 2
print(apple, Apple) # 输出 1 2
# 4. 避免保留字
class = 3 # ❌ SyntaxError: 'class' is a reserved keyword
klass = 3 # OK
# 5. 新值覆盖旧值,类型随意
x = 100
x = "hello"
x = [1, 2, 3]
print(x) # 最终输出 [1, 2, 3]
保留字
Python 的保留字(keyword)是语法本身占用的名字,不能作为变量、函数、类名。
如下
import keyword
print(keyword.kwlist)
更新变量
x=5
x+=2
print(x)
y=350
y//=10
print(y)
多变量赋值
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}")
二 函数
定义
函数是一个名字,代表一串代码序列(流程和过程)
函数有两个部分组成:header和body
header用于定义函数接口(函数名称和参数)
body包含函数所需要执行的操作。
header 用于定义函数的名称和参数
- 当函数被调用时,参数将会作为变量被提供给函数的 body 部分
- 可以提供多个参数(用逗号 , 分隔),也可以不提供参数 (0 个)
- header 以冒号(:)结尾,代表后面会跟着 body 部分
函数的 header 的写法:
def functionName(parameters): #f(x,y)
pass # 函数的 body 部分,这里使用 pass 代替
Body
body 包含函数执行的语句(statement)
要点
- 语句需要缩进(由 Code Style Guide 决定)
- 当语句不再缩进,函数部分结束
- 一般会使用 return 语句,来让函数返回其结果,但不是必须的
补充说明
类似于用一个 = 来对多个变量赋值,函数的返回结果也可以不止一个(用逗号 , 分隔)
注意
我们使用函数名来调用函数。
函数名后面紧跟一对括号。
括号中是我们设定的参数的值,一个不多,一个不少(重要)
函数会返回设定的return语句的值。
例子1
def double(X):
print("你好")
return 2*x
print(double(2))
print(double(5))
print(double(1)+3)
例子2
#3个参数
def f(X,y,z):
retrun x+y+z
print(f(1,2,3))
#无参数
def g():
retrun 12
print(g())
函数可以有多个参数,也可以一个没有
例子3
如果参数的数目没有匹配,会崩溃。
print(g(2))
print(f(1,2,3))
多返回值
def Multi_Return_Values():
return 9, 2, 8
a, b, c = Multi_Return_Values() #a,b,c=9,2,8
print(f"a={a}, b={b}, c={c}")
三.语句表达式
表达式:它本身是值,它的计算结果是值。
语句:它不是值,它不能打印,但它能执行一些操作。
例子
4
"hello world"
7+2
True or False
(2<3) and (9>0)
python只能print表达式,如果你用print()输出它,那它就是表达式
print((2<3) and (9>0) )
例子
def f(x):
return 5*x
x=5+4
if 10>5:
y=5+3
四.内置函数
类型转换
print(bool(1))
print(bool(0)) #转换布尔类型
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.35,2)) #保留两位小数
变量作用域
每个变量都有属于自己的作用范围,超出作用范围后,变量不可见。
def f(x):
print("x",x)
y=5 #局部变量
print("y",y)
return x+y
print(f(4))
print(x)
print(y)
函数内的变量具有局部作用域,它只存在于函数内部,与其他函数中的同名变量无关。
def f(x):
print("In f, x =", x)
x += 5
return x
def g(x):
y = f(x*2)
print("In g, x =", x)
z = f(x+3)
print("In g, x =", x)
return y + z
print(g(2))
在函数外部定义变量时,变量具有全局作用域,在任何地方都可以使用,应该避免使用全局变量
g=100
def f(x):
retrun x+g
print(f(5))
print(f(6))
print(g)
g=100
def f(x):
#如果我们想要改变g的值,我们必须声明它是全局变量,否则会假设它是局部变量。
global g
g=1
retrun x+g
print(f(5))
print(f(6))
print(g)
返回语句
def isPositive(x):
return (x>0)
print(isPositive(5))
print(isPositive(-5))
print(isPositive(0))
一旦返回,函数立即结束
def isPositive(x):
print("Hello!") # 会运行
return (x > 0)
print("Goodbye!") # 不会运行
print(isPositive(5)) # 输出“Hello!” 然后返回 True
没有返回语句的时候,函数会返回None
def f(x):
x+42
print(f(5))
函数组合
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)) # 你一定得"亲眼看看"