看一个小白痴的无聊笔记
感谢你在无聊之中看这篇文章,请慢慢了解明白
最后超萌视频给你解压
关于函数
"""
example01 - 全局变量和局部变量
全局变量(没有写在任何函数里面的变量)
局部变量(定义在函数内部的变量)
Python程序中搜索一个变量是按照 LEGB 顺序进行搜索的
Local(局部作用域) ---> Embeded(嵌套作用域) ---> Global(全局作用域)
---> Built-in(内置作用域) ---> NameError: name ... not defined
global ---> 声明使用全局变量或者定义一个局部变量将其放到全局作用域
nonlocal ---> 声明使用嵌套作用域的变量(不使用局部变量)
"""
x = 100
def foo():
# 如果我不想在函数foo中定义局部变量x,想直接使用全局变量x,应该怎么做???
# global x
x = 200
def bar():
# 如果我不想在函数bar中定义局部变量x,想直接使用嵌套作用域中的x,应该怎么做???
# nonlocal x
x = 300
print(x)
bar()
print(x)
foo()
print(x)
函数的分类
- 执行过程函数:函数体内完成一定的功能即可,没有返回值
- 具有返回值的函数:函数体内完成一定的功能,并且返回一个结果到函数的调用处。
函数中返回值(return)
- 函数中可以使用return进行数据的返回
- 可以使用return返回任意内容或数据
- return会把返回值,返回到函数调用出
- return 意味着函数的结束,return之后的代码不在执行
- 在一个函数中,可以返回一些内容,也可以不返回
- 如果没有return或return后面没有任何值,返回None
函数的参数
- 位置参数:必须和函数给的参数一致的位置。
- 默认参数:
- 可变参数参数 :可以只给一个值 arg , 需要有等号的复制kwarg
None
是一个特殊的数据,表示什么都没有。
example
def jia(n1, n2):
n3 = n1 + n2
return n3
print(jia(1, 2))
变量的作用域
作用域就是当前起作用,可用的范围区域
变量的有效范围
- 全局变量:在函数内外都可以使用的变量。
- 局部变量:在函数内部可以使用的变量,在外部无效。
- 可变数据类型:在函数外定义的变量,在函数可以使用。
- 不可变数据类型:在函数外定义的变量,在函数内只能访问,不能使用其它操作。
- 对容器型对象都是一样的。
- global定义的变量是定义全局变量,函数内外的操作一致,引用全局变量
- locals():获取当前作用域的变量数据。
- 两个函数,在全局变量是,print函数一样,当放在函数里时,local会变成函数里的变量值。
- 不光变量有作用域,函数一样也有相同的作用域
- nonlocal :在内函数中如果想使用外层函数的变量,那么需要使用nonlocal关键字应用。可以引用上一层定义的局部变量,但依旧不能提升为全部变量。
num = 10
varlist = [1, 2, 3]
def func(num):
'''
这里是让你些当前的文档说明的
需要说明当前函数的作用
如果当前函数的作用还有行参, 那么也需要对形参进行一一说明
name:这个是一个name参数,有什么作用。。。
age:这个表示当前的一个年龄
:return:此处说明当前函数的返回值
'''
print(num) #在函数内不可以获取函数外部的变量
num += 20 # 在函数内不能直接更改函数外的变量
# 函数外定义的变量可以访问但不能更改
print(varlist)
# 但是也不如同num变量一样不能更改,如append
love = 20
love += 1
print(love)
# 函数内定义的变量无法在外部使用,除非使用 global x
func(num)
def outer():
print('————')
# 在函数内定义的函数,称为 局部函数,函数外无法使用
num = 10
def inner():
# nonlocal 关键字在局部函数中使用,可以引用上一层定义的局部变量,但依旧不能提升为全部变量
print('123456')
num +=1
print(num)
#需要在创建函数里在加一个函数
print(num) # 在这里会出现错误
inner()