前言:下午写了两篇博客。我很累。昨天的博客本来可以写的,但是为了早点睡,所以没有写,下午才写的。我有点后悔,那一天就该完成了。总结一波:函数的实参和形参的用法、通用参数args和*kwargs、命名空间、变量作用域、globals和locals1、函数参数1.1传递实参一般有3种方式,1.LocationType参数,一一对应deftest(name1,age1):print(name1,age1)#python18test('python',18)2.关键字参数,一一对应即可,位置不需要对应deftest(name,age):print(age,name)#17pythontest(age=17,name='python')3.位置+关键字组合#3.位置+关键字组合deftest(name,age,hobby):print(age,name,hobby)#17pythonexercisetest("python",17,hobby="exercise")需要注意的是,位置参数必须在关键字类型之前。1.2.形参调用函数中参数的顺序是位置参数>*args>默认参数>关键字参数>**kwargs,重点介绍和*的用法。1、*的用法:函数中的参数代表聚合,意思是调用函数时传入的参数会在函数中聚合成一个参数args,方便后续维护简单。在调用中,参数代表打散,调用函数传入的参数将全部打散为一个。然后它会被聚合成函数中的一个参数。args一般是*args(arguments的缩写),是元组元组类型*args例子:deftest(*args):print(args,type(args))#1.定义函数用*表示聚合test("17","python",'study')#('17','python','study')#2.在调用函数test(*["17","python"],*["study","come","on"])#('17','python','study','come','on')2.**的用法:函数中的参数代表聚合,意思是调用函数时传入的参数会在函数中聚合成一个参数kwargs,方便后续维护简单。在调用中,参数代表打散,调用函数传入的参数将全部打散为一个。然后在函数中聚合成一个参数kwargs,简单方便后续维护。通常是*kwargs(keywordsarguments的缩写),它是一个字典dict类型。**kwargs示例:deftest(**kwargs):print(kwargs,type(kwargs))#1.在定义函数中使用**表示aggregationtest(name="python",age="17")#{'name':'python','age':'17'}#2.在调用函数中使用**来分解测试(**{'name':'python','age':'17'},**{'hobby':'study'})#{'name':'python','age':'17','hobby':'study'}3.与*混合使用:调用函数中参数的顺序为位置参数>*args>默认参数>关键字参数>**kwargs,不能改变顺序,否则会出错。deftest(*args,**kwargs):print(args,type(args))print(kwargs,type(kwargs))#1,*he**混合使用test(1,2,**{'we':"can"},age="17",name="python")#(1,2)#{'we':'can','age':'17','name':'python'}#2.位置参数+args+关键字参数+kwargstest(1,3,*(1,4),**{'we':"can"},age="17",name="python")#(1,3,1,4)#{'we':'can','age':'17','name':'python'}2.命名空间类似于C++中的命名空间。真的发现学好C++后,Python上手超级快,很多概念都是雷同的。命名空间一般包括:内置命名空间、全局命名空间和局部命名空间。内置:Python内部定义的名称builtins.py,全局命名空间:函数外部定义的所有变量都属于全局命名空间局部命名空间:函数内部定义的变量属于局部2.1加载顺序:内置命名>全局命名(从上面下载)>局部命名(函数调用时加载)2.2取值顺序:就近原则,局部变量>全局变量>内置变量2.3作用域全局作用域:全局命名空间+内置命名空间局部作用域:本地命名空间。有两个用于打印范围的内置函数,globals():打印全局范围和locals():打印当前空间的范围>>>name="python">>>globals(){'__name__':'__main__','__doc__':无,'__package__':无,'__loader__':<类'_frozen_importlib.BuiltinImporter'>,'__spec__':无,'__annotations__':{},'__builtins__':<模块'builtins'(内置)>,'name':'python'}>>>deftest():...age=17...print(locals())...>>>test(){'age':17}总结:今天老师说了一句很正确的话,就是培养自学能力。无论做什么,都要培养自学的能力,否则就会失去思考和学习的能力,路会越走越窄。