python函数中的参数传递的两种方式,python函数作为参数传递
1.定义函数的规则。
当我们自定义函数时,我们需要满足一些规则,否则编译器不会识别它们。
(1)函数代码块以def关键字开始,后面是函数标识符名和括号()。
(2)任何传入的参数和形参必须放在括号中。括号里写的是形参。
(3)函数的第一行语句可以选择性地使用文档字符串——用来存储函数描述。
(4)函数内容以冒号开头,函数体要缩进。
(5)return[expression]结束函数,有选择地向调用者返回值。不带表达式的Return等同于不返回任何表达式。
2.定义函数语法。
语法:
Def name (parameters):函数文档字符串(即函数描述) function_suite(函数体)return [expression]默认情况下,参数值和参数名按照函数声明中定义的顺序匹配。
3.函数调用
函数定义后,不会自动执行,只有被调用后才会执行。
这里有一个例子来解释函数的调用。
Printstr (str1):打印任何传入的字符串 print str1调用上面的打印字符串函数。
最初定义函数时,定义了一个参数str1,所以调用函数时,也必须传入一个参数,否则会报错。
Str(调用字符串打印函数)1执行结果:调用字符串打印函数4,传递参数
我们先来看两个例子。
示例1:传递变量
#!/usr/光明烤鸡/python # coding=utf-8 defchangenum(num):Num=1 print Num #定义变量Num,初始值为10num=10#changeNum(num)print 。Num执行结果:num=11用户定义函数中的函数调用。
#!/usr/光明烤鸡/Python #-*-编码:UTF-8-*-DefChangeList(列表:,list1#。Append (newstr) List:在print 函数中,List1 #定义变量num,初始值为10list1=[1,2,3]调用函数前打印 List:,list 1 changelist (list 1)调用函数后打印 List:,List1执行结果:调用函数前列表:[1,2,3]函数中列表:[1,2,3, new str]调用函数后列表:[1,2,3]从上面的结果可以看出,num变量的值在函数中发生了变化,但它在第二个示例中,元素“newStr”被添加到类似list1的函数中。在函数外查看原始list1,发现还添加了一个元素‘newStr’。也就是说,如果在函数中改变list1,原来的list1也会改变。但由此我们可以说,在Python中,实例1是传值,实例2是传引用?
其实不是,不像其他语言。在Python中,一切都是对象,Python参数通过“传递对象引用”来传递。实际上,这个方法相当于传递值和引用的综合。如果函数接收到一个对变量对象(比如字典或者列表)的引用,就可以修改对象的原始值,相当于通过“传递引用”来传递对象。如果函数接收到对不可变对象(如数字、字符或元组)的引用,则不能直接修改原对象,相当于通过“传值”来传递对象。这时,如果要改变这些变量的值,可以将这些变量声明为全局变量。
5.5.return语句的语法格式:
返回[表情]
return语句的意思是退出函数,有选择地返回一个表达式或者一个值或者多个返回值的元组给调用者。不带参数值的return语句返回None。如果函数不需要返回值,就不用写return语句。
Printinfo (arg1,arg2): sum=arg1arg2returnsum6。变量作用域
不是程序的所有变量都可以在任何位置被访问。访问权限取决于该变量的赋值位置。
变量的作用域决定了您可以访问哪个部分的哪个特定变量名。变量分为局部变量和全局变量。
7.局部变量
函数内部定义的变量是局部变量,只能在声明的函数内部访问。此类变量仅在函数运行时存在。一旦函数退出,这些局部变量将被销毁。函数中声明的所有变量名都将被添加到作用域中。例子如下:
函数中的Printinfo (arg1,arg2): sum=arg1arg2print ,函数外的sum变量printInfo(5,6)sum=1print 也在sum #函数外定义。上面的程序执行结果:函数内sum=11,函数外=18。全局变量
全局变量在函数外部定义,可以在整个程序中访问。但是,必须在要访问的函数中使用关键字global,将函数外部的变量声明为全局变量,这样才能访问函数外部定义的全局变量。
示例:
printinfo(y):global x sum=x y print sum=,sumx=10 printinfo (5)执行结果:sum=15变量一旦被定义为全局变量,就可以在程序的任何地方被访问或修改。所以我们不建议过度使用全局变量(不必要的使用),因为这可能会导致全局变量的不可预测性,全局变量也降低了函数或模块之间的通用性,也降低了代码的可读性。别人可能不知道这个调用是哪个变量。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。