简介:今天,首席执行官指出,与您分享Python计划中有多少全球相关内容。如果您可以添加您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
1.功能的定义
函数意味着一组语句的集由名称(函数名称)封装。如果要执行此函数,只需要调用功能名称
特征:
减少重复代码
使程序扩展
使程序易于维护
功能的参数
2.1,形状参数和实体参数
调用电话时存在的值
真实,实际存在的实际价值
2.2,默认参数
定义:当未输入参数的值时,将有一个默认值,并且必须将默认参数放在末端
2.3,关键参数
定义:在正常情况下,应安装该功能的参数数量。您不想按顺序使用关键参数。您只需要指定参数名称。Location参数(按顺序确定相应参数)
2.4,非固定参数
定义:如果您的函数不确定传递参数时需要引入多少个参数,则可以使用非固定参数
#通过表单组迎合
#浏览列表表格
#字典形式(通过K,值)
#通过变量
第三,功能的返回值
影响:
返回函数执行结果,如果没有设置,默认情况下无返回
终止函数运行,函数遇到返回以终止函数
第四,变量的作用
全局变量和本地变量
函数中定义的变量称为局部变量,在程序开头定义的变量称为全局变量
全局变量范围的整个程序,局部变量动作域是定义变量的函数
当全局变量与局部变量相同时,在定义本地变量的功能中,局部变量起作用,而其他地方的全局变量起着作用
同一级别的本地变量不能互相调用
如果函数中的变量设置为全局变量,则可以将全局用于设置
五个特殊功能
5.1,嵌套功能
定义:名称所建议的嵌套函数是在函数中嵌套函数层
提示调用从内部到外部调用的嵌套函数中的变量,这意味着,如果需要调用的变量将在外层中调用,然后依次依次按下。
匿名函数
基于lambda的功能格式为:lambda参数:功能正文
参数,支持任何参数。
匿名功能适合简单的业务处理,可以快速并简单地创建功能。
#与三元操作结合
5.3,高级别功能
定义:变量可以指向该函数,该函数的参数可以接收变量,然后一个函数可以接收另一个函数作为参数。此函数称为高阶函数。
接收一个或多个功能作为输入
返回另一个功能
5.4,递归功能
定义:一个功能可以调用其他功能。如果函数自我调用,则此功能称为递归功能
默认情况下,Python最多可以恢复1,000次,因此可以修改(设计师要防止被记忆杀死)
递归实现过程是逐层的第一层
必须有明确的条件才能结束,否则是一个死周期
每当您进入更深层次的水平时,都应减少问题的规模
递归执行效率不高,递归水平太多会导致溢出
#计算4 of 4x3x2x1
#1-100的打印号码
5.5,封闭现象
定义:内层函数调用外部函数的变量,并将内存函数返回到外部
关闭的含义:返回函数对象不仅是函数对象,而且还包裹函数外部的范围。
定义为模块中函数的全局范围是模块的名称空间,而不是定义或调用的函数的别名
尽管范围是静态定义,但使用时动作范围是动态的。在任何操作时,总有三个角色分数(即只有三个名称空间可以直接访问):内层首先搜索范围,包括本地名称;其次,搜索包括当前模块的全局名称;最终搜索了外层的外部化,包括构建的名称。
在正常情况下,本地操作域参考了当前功能的本地名称,该零件位于源程序的意义上。模块。类定义被添加到本地范围中的另一个名称空间中。
必须注意的是,范围是根据源程序中的文本位置确定的:模块中定义的函数的全局范围是模块的名称空间,无论该函数在何处称为何处或名称。另一方面,对名称的搜索是在程序操作中动态执行的。但是,Python语言的定义也在不断发展。将来它可能会发展为静态名称分析。编译时,请勿依靠动态名称分析!(实际上,本地名称是静态的)。
类的范围包括类定义范围和类的范围。
班级成员具有班级的范围。
私人成员和受保护成员只能由内部成员的成员访问
公共成员是班级提供给外部的接口,
您可以在外面访问。
这项技术实现了信息的隐藏和封装。
以前已经提到了功能函数的概念,而没有解释函数的概念是因为程序中的功能与数学中的功能相似,例如Input(),range(),range()等。。这些是python的。标准函数,只需直接使用它。根据需求,用户还可以自定义功能。
12.1功能
功能的结构:
DEF函数名称(参数):
功能主体
返回值
例如:数学中的函数f(x)= 2x+5可以定义如下:python中:
def f(x):
y = 2*x+5
返回(y)
如果将X带到3,则可以使用以下句子调用函数:
F(3)
完整的程序代码如下:
def f(x):
y = 2*x+5
返回(y)
res = f(3)
打印(RES)
运行结果:11
例如,上面示例中的x是函数f(x)的参数,有时也称为形式参数(称为正式参数)。当调用函数时,X被特定值3替换为函数的返回值。该值3 3 3个被称为实际参数(称为真实参数)。
上面示例中的y是函数f(x)的返回值。所有函数都有参数和返回值。作为以下函数:
def func():
打印(“这是参数传递的函数,无返回值”)
func()
输出结果:这是非参数传递的函数,无回报值
可以看出,函数func()没有参数,因此在调用时无需分配给参数值。
该函数还可以具有多个参数,例如f(x,y)=x2+y2,并且python语言可以定义如下:
def f(x,y):
z = x ** 2+y ** 2
返回z
打印(F(2,3))#calling函数F(X,Y)
输出结果:13
您还可以通过直接在参数列表中的参数分配方法分配参数来添加无声识别。如果用户给出参数值,则将根据用户值执行,否则使用默认值。例如:
def f(x,y = 3):
z = x ** 2+y ** 2
返回z
如果参数列表在呼叫时为(2,1),即X分配为2,y分配为1:
打印(F(F(2,1)))
输出结果是:5
如果参数列表为(2)当调用呼叫时,即x的分配为2,并且分配了y来保存值,则y使用默认值:
打印(F(2))
输出结果是:13
回调函数(也称为函数回调)是该函数作为另一个函数的参数。
例如:
Def func(Fun,M,N):
娱乐(M,N)
DEF F_ADD(M,N):
打印('m+n =',m+n)
def f_mult(m,n):
打印('m*n =',m*n)
func(F_ADD,2,3)
func(f_mult,2,3)
输出结果:
m+n = 5
m*n = 6
在定义了F_ADD(M,N)和F_Mult(M,N)之前,Func(Fun,M,N)在Func(Fun,M,N)中已经称为这两个功能,这也是ISTHIS的特征回调功能。
如果无法预测参数的数量,则可以将No.*添加到参数。该参数实际上对应于meta -group的类型。例如,不能提前确定参与者的数量,仅根据参与者列表进行输入:
def func(*名称):
印刷(“今天我有:')
名称中的名称:
打印(名称)
func('Zhang Xiaobing','Chen Chenmei','Li Dahai','Wang Changjiang')
运行后,输出结果是:
今天的参与者是:
张小ob
Chen Xiaomei
Li Dahai
王扬
该参数是一种字典类型,需要在参数之前添加。
def func(** kwargs):
因为我在夸尔格斯:
打印(i,Kwargs [i])
func(a ='a1',b ='b1',c ='c1')
输出结果是:
A1
B B1
C1
一个有趣的例子:
def func(x,y,z,*args,** kwargs):
打印(X,Y,Z)
打印(args)
印刷(夸尔格)
func('a','b','c','python','很容易',py ='python',j ='java',ph ='php')))))))))))))))))))))
输出结果:
a b c#前三个实际参数用于前三个正式参数
('Python',''很容易')# *ARGS接收大都会组数据
{'py':'python','j':java','php'}#** kwargs接收词典数据
12.2变量的范围
变量的活动范围是变量的有效范围,可以将其分为全局变量和局部变量。
本地变量
函数中定义的变量是局部变量,局部变量的范围仅限于函数的内部使用。
全局变量
主程序中定义的变量是一个全局变量,但是使用关键字全局在函数中修改的变量也可以用作全局变量。
全局变量的范围是整个程序,即可以在整个程序中访问全局变量。
让我们讨论下面的示例:
程序1:
a = 1#a是一个全局变量
DEF A_ADD():
print('a,初始值:',a)#读取函数中a的值
a_add()#调用函数a_add()
a+= 1#主程序前言,a增加1
print('A的当前值是:',a)#主程序句子,阅读A的值
操作结果:
A:1的初始值
A的当前值是:2
这个结果与我们的想法相同。全局变量A可以在主程序或子例程(函数)中读取。
程序2:
a = 1
DEF A_ADD():
A+= 1
打印('A的初始值:',a)
a_add()
打印('A的当前值是:',a)
运行程序1时出现以下错误提示:
unboundlocalerror:分配前引用的本地变量“ a”
含义:在分配之前引用了本地变量“ A”。
在语法方面,程序中没有错误。首先,将全局变量A定义并分配给1,而函数A_ADD()。函数中的语句A+= 1是错误的根本原因。尽管我们的最初意图是将全局变量A的价值提高1,但从从错误的提示上来看,该语句中的A不是全局变量,而是局部变量。看来读取全局的价值函数中的变量不是问题(在程序1中验证),但是不可能更改函数中全局变量的值(程序2的错误提示不适合A+= 1A,不是本地变量,不是全局变量)。
如何解决这个问题呢?
程序3:
a = 1
DEF A_ADD(X):
x+= 1
返回x
打印('A的初始值:',a)
a = a_add(a)
打印('A的当前值是:',a)
操作结果:
A:1的初始值
A的当前值是:2
结果确实是正确的,但是函数A_ADD(x)中没有呼叫变量A(没有变量A)。
程序4:
a = 1
DEF A_ADD(A):
A+= 1
返回
打印('A的初始值:',a)
a = a_add(a)
打印('A的当前值是:',a)
操作结果:
A:1的初始值
A的当前值是:2
比较程序4和程序3并不难找到。实际上,程序4只是将函数的参数x转换为A。该a的实质与程序中的x相同3。这进一步证实了该函数中的a是局部变量,这与该变量基本不同主要程序的全局变量a。
程序5:
a = 1
DEF A_ADD():
全球a
A+= 1
打印('A的初始值:',a)
a_add()
打印('A的当前值是:',a)
操作结果:
A:1的初始值
A的当前值是:2
与程序5和程序2相比,只需在功能中添加定义“全局a”即可。目前,局部变量A可以用作全局变量。由于它与全局变量A自然而然地名称相同,因此无需区分A.它是一个全局变量或局部变量,可以访问和修改主程序中变量A的值功能。
尽管全局的使用可以使变量非常方便,但也很容易引起混乱,因此最好在使用过程中保持谨慎。
12.3功能的递归和嵌套
递归是函数本身。必须设置递归条件,否则将不会终止函数,并且将形成死周期。
以计算级乘法为例:
def func(n):
如果n == 1:
返回1
别的:
返回n*func(n-1)#func()调用func()
印刷(弹性(5))
运行结果:120
嵌入是指在函数中调用另一个函数。这是程序中的一个常见结构,我不会在此处详细介绍。
匿名函数
Python可以在参数之前添加关键字lambda,以定义匿名函数。这样的功能通常属于“一个时间”。
例如:
程序1:这是一个常规的函数定义和调用。
def f_add(x,y):
返回x+y
打印(F_ADD(2,3))
输出结果:5
程序2:使用lambda定义匿名功能。
f_add = lambda x,y:x+y
打印(F_ADD(2,3))
输出结果:5
从上面的代码可以看出lambda仅减少一行代码。f_add= lambda x,y:x+y f_add不是可变名称,而是函数名称。程序1和程序2中的参数是相同的-call函数f_add()。因此,匿名函数没有太大优势。
当您在程序中使用变量名时,Python的创建,更改或查找变量名称都在SO称为命名空间中,这是我们想说的变量的范围。代码确定变量将存在的哪个空间,即他的可见范围。
DEF中的变量名称与DEF以外的变量名称没有冲突。一个是在def之外分配的(例如,在模块文件的另一个def或顶层中),变量x是完全不同的变量。
因此,我们可以看到该变量的作用取决于程序文件中程序文件中源代码的位置,而不是由函数调用确定。
在说了很多概念之后,使用示例!
x = 99 def func():x = 88 print(x)func()print(x)88 99
可以在这里看到此模块文件:句子x = 99,我们创建了一个名为x的全局变量(在此函数所在的模块文件中可见),但是x = 88分配语句创建了一个局部区域来创建一个局部区域局部变量X(仅在DEF语句中可见)。
尽管两个变量均为X,但它们的范围可以区分它们。
然后,我们扩展了特定简介函数的四个圆形范围:legb,即lgb,即l本地范围,e嵌入式范围,g全局范围和b构建的范围。
本地操作域是在函数中定义的,模块(即xxx.py文件)定义了全局范围。对于构建的-in范围,当我们使用它时,使用可变名称而无需导入任何模块,例如一些构建的功能名称:打印等等
这是对Python中所谓的全球范围的强调:
全球角色的范围仅限于一个文件。不要被全球单词混淆。全局引用文件的顶层的变量名是该文件中的代码的全局。
变量名是由模块文件分开的,必须准确介绍模块文件以使用此文件中使用的变量名称。
让我们谈谈本地范围:每次调用函数时,都会创建一个新的本地范围。除非分配变量名称的语句是全局变量或非局部变量,否则它是局部变量。默认情况下,所有函数定义的内部变量名称位于本地范围中(与函数调用有关)。
让我们看一下证明这两个范围的两种方法:
x = 99 def func(y):z = x + y返回z print(func(1))100
这个示例出现了全球情况
在Python程序中,可以根据变量的位置和范围将变量分为两种类型:局部变量和全局变量。仅在函数中存在局部变量,而动作范围仅在函数内部。全局变量范围可用于多个函数。
1.本地变量
局部变量在函数中声明,并且只能在此函数中调用。如果您尝试在超过该范围的位置打电话,则会发生错误。(在功能中使用后,将释放局部变量,因此无法在其他区域内调用)
第二,全球变量
全局变量是指整个.py文件中定义的变量,这些变量在程序执行的整个过程中都是有效的。当函数内部使用全局变量时,需要使用保留的Word global来声明它们。
(当声明全局变量时,变量名不能更改!)
该部分涉及Python变量的相关知识。变量是域是指变量的有效范围。直接理解是,python中的变量没有被任何位置访问,并且存在限制。
在正常情况下,变量的范围是阻塞,功能,类,模块,包等,并且该水平从童年时代到达。python中没有块 - 级别的范围,因此,当我们编写代码时,以下代码为正确的。
python中的常见块 - 级别范围包括if语句,语句,语句以及带有。
如上所述,函数的范围是Python程序可以直接访问变量的范围。Python的范围有4种,如下:
一个更经典的案例如下:
Python中的变量顺序是从内部到外部,第一部分,一部分,然后在内部,内部,此规则称为LEGB规则。
在下面增加学习的乐趣,您可以研究以下代码中的变量如何更改。
函数中定义的变量具有局部范围,并且在函数外部定义的变量具有全局范围。
函数内部的输出结果为123,功能的外部仍然为0。
如果您希望函数的内部(内部范围)修改外部操作域的变量,则需要使用全局关键字。
目前,输出为123,并且有一点关注。如果功能内容要修改全局变量的值,则必须在变量操作之前编写全局关键字。
该代码将具有语法错误:
经常出现的全球变量也有一个真正的问题。我可以询问以下代码运行结果。
如果要修改嵌入式字段(封闭)中的变量,则需要非本地关键字。测试代码如下:
输出结果单独测试。请注意,非本地关键字必须是Python3.x+版本。Python 2.X版本将具有语法错误:
在多个规范中,非局限性只会返回一层。如果上层不可用,它将继续追踪。您可以分别评论结果。
什么是特定变量和全局变量,可以通过两个构建的函数获得:locals()和Globals()。
该博客说明了Python的范围,并学习了全局和非本地关键字。我希望这对您有帮助。
结论:以上是首席CTO注释为每个人编写的Python程序相关内容的相关内容摘要。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?