Python Day3

变量 VARIABLES

对变量的理解

  • 变量是一个名字,它指的是一段数据

  • 使用 = 来对这段数据的区域进行赋值

注意:

①新的值会覆盖旧的值

②新的数据类型不必与旧的相同

y = 10
print(y - 2)
#结果为8
y = ture
print(y)
#结果为true

变量命名规则

  • 必须以字母下划线 (_) 开头

  • 命名可有字母数字下划线组成

  • 大小写敏感

  • 尽量避免使用保留字命名

保留字

['False',
 'None',
 'True',
 '__peg_parser__',
 'and',
 'as',
 'assert',
 'async',
 'await',
 'break',
 'class',
 'continue',
 'def',
 'del',
 'elif',
 'else',
 'except',
 'finally',
 'for',
 'from',
 'global',
 'if',
 'import',
 'in',
 'is',
 'lambda',
 'nonlocal',
 'not',
 'or',
 'pass',
 'raise',
 'return',
 'try',
 'while',
 'with',
 'yield']

更新变量

y = 350
y //= 10
print(y) # 35
 # 等价于 y = y // 2

多变量赋值

a = b = c = 2
print(f"a={a}, b={b}, c={c}")
#结果为 a=2, b=2, c=2

函数 Functions

  • 函数是一个名字,代表一串代码序列(流程、过程)

  • 函数由两个部分组成:headerbody

    • header 用于定义函数接口(函数 名称参数

    • body 包含函数所需要执行的操作

header

header 用于定义函数的名称参数

  • 当函数被调用时,参数将会作为变量被提供给函数的 body 部分

  • 可以提供多个参数(用逗号 , 分隔),也可以不提供参数(0 个)

  • header 以冒号(:)结尾,代表后面会跟着 body 部分

函数的 header 的写法:

def functionName(parameters):
    pass # 函数的 body 部分,这里使用 pass 代替

body

body 包含函数执行的语句(statement

  • 语句需要缩进(由 Code Style Guide 决定)

  • 当语句不再缩进,函数部分结束

  • 一般会使用 return 语句,来让函数返回其结果,但不是必须的

类似于用一个 = 来对多个变量赋值,函数的返回结果也可以不止一个(用逗号 , 分隔)

def double(x):
    print("我在一个名叫 “double” 函数里!")
    return 2 * x
  • 我们使用函数名来调用函数

  • 函数名后紧跟一对括号

  • 括号中是我们设定的参数的,一个不多,一个不少(这很重要)

  • 函数会返回设定的 return 语句的值

调用示例函数 double() 会返回一个值(2 * x

函数可以有任意多个参数,也可以一个都没有

# 三个参数
def f(x, y, z):
    return x + y + z
​
print(f(1, 3, 2)) # 返回 6

可是如果参数数目没有匹配的话……Oops!

TypeError                                 Traceback (most recent call last)
Cell In [29], line 1
----> 1 print(g(2))
​
TypeError: g() takes 0 positional arguments but 1 was giv

多返回值

def Multi_Return_Values():
    return 9, 2, 8
​
a, b, c = Multi_Return_Values()
print(f"a={a}, b={b}, c={c}")
​
# 结果为 a=9, b=2, c=8

语句与表达式 Statements and Expressions

对于表达式

  • 它本身是

  • 它的计算结果是值

对于语句

  • 它不是值

  • 它不能打印

  • 但它能执行一些操作

Python 只能 print 值和表达式,如果你能用 print() 输出它,那它就是表达式

内置函数 Builtin Functions(Python自带的函数)

类型转换

print(bool(0))   # 转换为布尔类型(True or False)
print(float(42)) # 转换为浮点数
print(int(2.8))  # 转换为一个整数(舍弃小数点)
"""
结果分别为 
2 
False 
42.0
"""

一些基本数学函数(不在math库中)

print(abs(-5))   # 绝对值
5
print(max(2,3))  # 返回最大值
3
print(min(2,3))  # 返回最小值
2
print(pow(2,10))  # 次方运算,等价于 2**10
1024
print(round(2.354, 2)) # 取最近的一个整数(并不完全是四舍五入,二进制精度丢失)
2.35

变量作用域 Variable Scope

  • 每个变量都有属于自己的作用范围

  • 超出作用范围后,变量不可见

我们设定一个函数 f(x), 它的内部有 xy 两个变量

记得一定要重启 Jupyter Kernel!

def f(x):
    print("x:", x)
    y = 5
    print("y:", y)
    return x + y
​
print(f(4))
"""
结果为
x: 4
y: 5
9
"""

函数内的变量具有局部作用域,它只存在于函数内部,与其他函数中的同名变量无关

在函数外部定义变量时,变量具有全局作用域,在任何地方都可以使用

我们应该尽量避免使用全局变量,但是在非常少的一些场合你会需要用到它

返回语句 Return Statements

def isPositive(x):
    return (x > 0)
print(isPositive(5))
# 结果为 True

一旦返回,函数立即结束!

Print versus Return

def cubed(x):
    print(x**3)  # 这里的操作不太合适
    
cubed(2)  # 但是似乎看起来也正常运行了
8
​
print(cubed(3))  # 应该也能有效(但是返回 None,太怪了)
27
None
​
print(2*cubed(4)) # Error!
64

正确写法:

def cubed(x):
    return (x**3) # 这样做更好
​
cubed(2)  #似乎输出被忽略了,为什么?
8
​
print(cubed(3))  # 有效了!
27
​
print(2*cubed(4))  # 也是有效的!
128

函数组合 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)) # 你一定得“亲眼看看”
​
# 结果为:500

Helper Functions

编写函数是用来解决问题的

我们还可以编写函数来存储那些经常被用到的一系列操作

这种函数就叫做 Helper Function

def onesDigit(n):
    return n%10
​
def largerOnesDigit(x, y):
    return max(onesDigit(x), onesDigit(y))
​
print(largerOnesDigit(134, 672))
print(largerOnesDigit(132, 674))
"""
结果为
4
4
"""

总结

  • 变量只是个标签,物理设备上有啥才是重点

  • 函数定义:def、header、body、缩进、return

  • 函数是有作用域的,类似双层玻璃,里面可以看见外面,外面不能看见里面

  • Helper Function 有时候会很有用

  • 一定要亲眼看你的代码是怎么跑起来的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值