我是靠谱客的博主 笨笨高跟鞋,最近开发中收集的这篇文章主要介绍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语句练习实例:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部