我是靠谱客的博主 笨笨高跟鞋,最近开发中收集的这篇文章主要介绍Python学习手册——函数(1)Python函数主要概念def语句作用域法则nonlocal语句练习实例:,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
纸上得来终觉浅,绝知此事要躬行!
Python函数主要概念
- def是可执行的代码。
- def创建了一个对象并能将其赋值给某一变量名。
- lambda创建一个对象但将其作为结果返回。
- return将一个结果对象发送给调用者。
- yield向调用者发回一个结果对象,但是记住它离开的地方。
- global声明一个模块级的变量并被赋值。
- nonlocal声明了将要赋值的一个封闭的函数变量。
- 函数是通过赋值(对象引用)传递的。
- 参数、返回值以及变量并不是声明。
def语句
创建一个函数对象并将其赋值给一个变量名:
def <name>(arg1,arg2,…,argN)
<statements>
当程序运行并执行了def语句时,它将会创建新的函数对象,封装这个函数的代码并将这个对象赋值给变量名name。
作用域法则
- 内嵌的模块是全局作用域。一个创建于模块文件顶层的变量的命名空间。
- 全局作用域的作用范围仅限于单个文件。
- 每次对函数的调用都创建了一个新的本地作用域。
- 赋值的变量名除非声明为全局变量或非本地变量,否则均为本地变量。
- 所有其它的变量名都可以归纳为本地、全局或者内置的。
下面例子中,X,func为全局变量名;Y,Z为本地变量名。
X=99
def func(Y):
Z=X+Y
return Z
func(1)
nonlocal语句
py3中,使用nonlocal语句声明嵌套的作用域,使得嵌套的函数能够赋值,并且由此能够修改这样的名称。
练习实例:
s1="lfq"
s2="ljm"
[x for x in s1 if x in s2]
def intersect(s1,s2):
res=[]
for x in s1:
if x in s2:
res.append(x)
return res
intersect(s1,s2)
intersect(s1,["l","q","F"])
X=99
def func(Y):
Z=X+Y
return Z
func(1)
def func(Y):
X=80
Z=X+Y
return Z
X=99
print(func(1))
print(X)
def func(Y):
global X
X=80
Z=X+Y
return Z
X=99
print(func(1))
print(X)
y,z=1,2
def all_global():
global x
x=y+z
print(x)
y,z=1,2
def all_global():
global x
x=y+z
all_global()
print(x)
def f1(x):
def f2(y):
return x*y
return f2
f=f1(3)
print(f)
print(type(f))
f(2)
f(4)
f2(4)
f1(3)(5)
def f1(start):
state=start
def f2(lable):
nonlocal state
print(lable,state)
state += 1
return f2
f=f1(0)
print(f)
f("A")
f("B")
f1(10)("C")
f("C")
最后
以上就是笨笨高跟鞋为你收集整理的Python学习手册——函数(1)Python函数主要概念def语句作用域法则nonlocal语句练习实例:的全部内容,希望文章能够帮你解决Python学习手册——函数(1)Python函数主要概念def语句作用域法则nonlocal语句练习实例:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复