python 函数的参数传递:
1.不可变类型:类似java中的值传递,如 整数、字符串、元组。
如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a
本身。如下,只是值传递,所以别处修改,不会影响其本身的值
print( b ) # 结果是还是2.虽然调用了函数,在函数里修改了b的值,但是实际对b的值不影响。
2.可变类型:类似java中的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响。
如下因为是引用传递,一处修改值,处处修改
要点总结:python 中一切都是对象,严格意义我们不能说值传递还是引用传递,应该说传不可变对象和传可变对象。
1. python用lambda表达式来构建匿名函数,所谓匿名没有def定义了。 2.lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去,比较简单。 #写一个求两个数之和的函数sum1 #3.lambda表达式只能封装一些简单的逻辑,不能封装一个代码块,否则报错
#1.return “表达式”。不过表达式会进行运算化简,也可以直接return什么都不加
#2.每个函数只能有一个return 语句,多个return语句的话,后面的return不会执行
#2.因为函数执行到return语句后,就直接停止了,return后面的所以语句都不会执行
None #当使用return时,却没有实际返回值,那么系统会将函数的返回值为None
#4.return一次只能返回一个值,如果想返回多个值用列表元组字典等封装
统一声明:关于原创博客内容,可能会有部分内容参考自互联网,如有原创链接会声明引用;如找不到原创链接,在此声明如有侵权请联系删除哈。关于转载博客,如有原创链接会声明;如找不到原创链接,在此声明如有侵权请联系删除哈。
函数是可以重复执行的语句块,可以重复使用。
用于封装语句块,提高代码的重用性。
3、函数定义(创建)语句
def 函数名(形参列表)
函数的名字就是语句块的名称。
函数名的命名规则与变量名相同(函数名必须为标识符)。
函数有自己的名字空间,在函数外部不可以访问函数内部的变量,在函数内部可以访问函数外部的变量,通常让函数处理外部数据需要用参数给函数传入一些数据。
函数的参数列表可以为空。
语句部分不能为空。如果为空需要填充pass语句。
定义一个函数,绑定三条语句块,并输出其结果。
1、函数名(实际调用传递参数列表)注:实际调用传递参数以后称为实参。
如果没有return语句,此函数执行完毕后返加None对象,如果函数需要返回其它的对象需要用到return语句。
案例分析:上例代码中,函数名括号内的叫形参(也叫变量),其余的都称之为语句块。形参并不会直接赋值,有两个形参,在函数调用的时候,一定要给两个实参。其语法结构是先传递a和b的值(20给a,30给b, 按照先后的顺序进行对应),然后再判断。代码如下图:
return [表达式] ———[]代表里面的内容可以省略。
用于函数中,结束当前函数的执行,返回到调用该函数的地方,同时返回一个对象的引用关系。
return语句后跟的表达式可以省略,省略后相当于return None。
如果函数没有return语句,则函数挂靠完最后一条语句后返回None。
函数调用一定会返回一个对象的引用。(默认返回Node)。
写一个函数mymax,实现返回两个数的最大值。如:
案例分析:首先判断两个数的大小,如果a大于b,就return a,否则就return b。
写一个函数input_number,此函数用来获取用户循环输入的整数,当用户输入负数时,结束输入。将用户输入数以列表的形式返回,再用再建函数max,min,sum求出用户输入的最大值,最小值及和。
案例分析:首先在函数内部定义一个空列表,在输入端输入一个数,并转换为整型, 判断输入的数字如果小于0,返回列表,否则把大于0的数添加到列表中,然后分别求出列表的最大值,最小值与和。代码如下图:
四:python函数的参数传递
实际参数(实参)的对应关系与形式参数(形参)的对应关系是按位置来依次对应的。示列:
实际参数和形式参数通过位置进行传递的匹配实参个数必须与形参个数相同。
序列传参是指在函数调用过程中,用 * 将序列拆解后按位置传参的方式进行参数传递。
关键字传参是指传参时,按着形参的名称给形参赋值,实参和形参按名称进行匹配。
是指实参为字典,将字典用 ** 拆解后进行关键字传参。
字典的键名和形参名必须一致。
字典键名必须为字符串。
字典的键名要在形参中存在。
函数传参方式,在能确定形参能唯一匹配到相应实参的情况下可以任意组合。
传参时先位置传参,后关键字传参。
函数可是python语言中的重中之重,如团队协作开发时,可互相调用编写的函数,这可以得高效率开发的效果。朋友们,有关函数我们就说到这,如果大家喜欢小编的内容,请互粉、关注、评论!小编一定会创作更多优质的内容为广大python爱好者们服务。
1. 下列哪个表达式在Python中是非法的? B
3. 如何解释下面的执行结果? B
B. 浮点数无法精确表示
C. 布尔运算不能用于浮点数比较
4. 下列代码执行结果是什么? D
5. 下列哪种类型是Python的映射类型? D
6. 下述字符串格式化语法正确的是? D
8. 下列代码的运行结果是? D
9. 下列代码运行结果是? C
10. 下列哪种不是Python元组的定义方式? A
11. a与b定义如下,下列哪个是正确的? B
12. 下列对协程的理解错误的是? D
A. 一个线程可以运行多个协程
B. 协程的调度由所在程序自身控制
C. Linux中线程的调度由操作系统控制
D. Linux中协程的调度由操作系统控制
13. 下列哪种函式参数定义不合法? C
14. 下列代码执行结果是? A
15. 一个段代码定义如下,下列调用结果正确的是?A
16. 下面代码运行结果? C
17. 下面代码运行后,a、b、c、d四个变量的值,描述错误的是? D
18. 有如下函数定义,执行结果正确的是? A
19. 有如下类定义,下列描述错误的是? D
20. 下列代码运行结果是? C
A. 函数可以赋值给一个变量
B. 函数可以作为元素添加到集合对象中
C. 函数可以作为参数值传递给其它函数
D. 函数可以当做函数的返回值
B. __foo解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名
B. __new__方法会返回一个创建的实例,而__init__什么都不返回
D. 当创建一个新实例时调用__new__,初始化一个实例时用__init__
29. 下列语句的执行结果是什么? 答:3
30. 下列代码的运行结果是多少? 答:4
Python学习交流群:领取小编精心整理的零基础入门的学习教程