python函数(一)

举报
tea_year 发表于 2021/12/29 22:20:52 2021/12/29
【摘要】 #函数基本应用,函数可以看做是语句的集合,通过函数调用来执行其包含的语句。函数可以返回一个计算结果,根据每次函数调用的参数#可以返回不同的计算结果,根据每次调用的参数,可以返回不同的计算结果。#python利用函数提高代码的重用率,减少了代码冗余。#定义函数#python使用def语句定义函数,基本格式如下:# def 函数名(参数表)...

  
  1. #函数基本应用,函数可以看做是语句的集合,通过函数调用来执行其包含的语句。函数可以返回一个计算结果,根据每次函数调用的参数
  2. #可以返回不同的计算结果,根据每次调用的参数,可以返回不同的计算结果。
  3. #python利用函数提高代码的重用率,减少了代码冗余。
  4. #定义函数
  5. #python使用def语句定义函数,基本格式如下:
  6. # def 函数名(参数表):
  7. # 函数语句
  8. # return 返回值
  9. #其中,参数和返回值都不是必须有的,python允许函数可以没有参数,也没有返回值。例如:
  10. def hello():
  11. print("python 你好")
  12. #调用函数;
  13. hello()
  14. #hello()函数没有参数,也没有返回值,通过print()打印一个字符串。下面的例子定义两个参数,并用return语句返回两个参数的和;
  15. #定义函数
  16. def add(a,b):
  17. return a+b
  18. #调用函数,并接受返回值;
  19. res=add(2,4)
  20. #打印输出的结果 ;
  21. print(res)
  22. #函数调用
  23. #在python中,所有的语句都是实时执行的,不像cc++存在编译过程。def也是一条可执行的语句,定义一个函数。所以函数的调用
  24. #必须在函数定义之后。
  25. #在python中,函数名也是一个变量,它引用return语句返回的值,没有返回值,函数值为None。
  26. #定义函数
  27. def mul(a,b):
  28. return a*b
  29. #直接访问函数名,可返回函数名的内存地址
  30. print(add)
  31. #如下是调用函数,并接受返回值,以及将函数名赋值给变量,然后使用变量进行调用。
  32. def div(a,b):
  33. return a/b
  34. #调用函数,并返回函数值;
  35. res=div(10,2)
  36. #打印结果;
  37. print("10/2=",res)
  38. #将函数名赋值给变量
  39. x=div
  40. #通过变量名来调用函数
  41. res=x(1,8)
  42. #打印结果;
  43. print(res)
  44. #函数参数,在定义函数的时候,参数中的各个参数成为形式参数,简称形参。调用函数时,参数表中提供的参数称为实际参数。
  45. #在python中,变量保存的是对象的引用,类似C C++中的指针。实际传递给形参的就是将对象的引用赋值给形参。
  46. #多态是,面向对象的一个特点,指同一个行为针对不同对象会得到不同的结果。python中的变量无类型属性,变量可引用各种不同
  47. #类型的对象。同一个函数,传递的实际参数不同时,可获得不同的结果,提现了多态。
  48. #支持“+”运算的对象均可作为参数
  49. def add(a,b):
  50. return a+b
  51. res=add(1,2.5)
  52. print("数值相加:",res)
  53. res=add("abc","def")
  54. print("字符串相加:",res)
  55. res=add((1,2),(3,8))
  56. print("元祖合并,",res)
  57. res=add([1,2],[3,4])
  58. print("列表合并:",res)
  59. #这里的+属于直接使用的方式,实现了多态。
  60. #参数赋值传递,通常函数调用时按参数的先后顺序,将实际传递形参传递给形参。例如调用add(1,2.5)时,1传递给a
  61. #2.5传递给b。python允许以形参赋值的方式,指定将实参传递给形参。
  62. #定义函数
  63. def add(a,b):
  64. return a+b
  65. #通过赋值来传递参数
  66. res=add(a='ab',b='cd')
  67. print(res)
  68. #通过赋值来传递参数;
  69. res=add(b='ab',a='cd')
  70. print(res)
  71. #可以看出来,在采用参数赋值传递时,因为指明了接受实参的形参名称,所以参数的先后顺序已经无关紧要。参数赋值传递方式
  72. #成了关键字传递。
  73. #3.参数传递与共享引用
  74. #定义函数
  75. def f(x):
  76. x=100
  77. #定义变量,并将变量作为参数传入函数;
  78. a=10
  79. f(a)
  80. #执行后显示变量的值;
  81. print(a)
  82. #从结果可以看出,实际参数的值已经覆盖了原来的值100.
  83. #4.小心使用可变参数,当参数是可变参对象时,如列表、字典等,若在函数中修改形参,因为是共享引用
  84. #通过实参也获得修改后的对象。
  85. def f(a):
  86. #修改列表第一个值
  87. a[1]='abc'
  88. #定义列表对象;
  89. x=[1,2]
  90. #调用函数,传递列表对象的引用
  91. f(x)
  92. #变量x引用的列表对象在函数中被修改。
  93. print(x)
  94. #可见,可变参数可在函数中被修改,如果不希望在函数中的修改影响函数外的变量,应该注意避免可变参数被修改。
  95. #如果要避免列表在函数中被修改,可使用列表的拷贝作为实参。例如:
  96. def f(a):
  97. #修改列表中的第一个值;
  98. a[0]='abc'
  99. x=[1,2]
  100. #传递列表的拷贝
  101. # f(x[:])
  102. print(x)
  103. #如果不希望在函数中的修改影响函数外的变量,应避免可变参数被修改。如果要避免列表在函数中被修改,可使用列表的拷贝
  104. #作为实际参数。
  105. def f(a):
  106. #拷贝列表;
  107. a=a[:]
  108. #修改列表的拷贝;
  109. a[0]='abc'
  110. x=[15,2]
  111. #调用函数
  112. f(x)
  113. #结果显示原列表不变
  114. print(x)
  115. #5.有默认值的参数;
  116. #在定义函数时,可以为参数设置一个默认值,调用函数时,如果未提供实际参数,则形参取默认值。例如:
  117. #定义函数;
  118. def add(a=9,b=-100):
  119. return a+b
  120. #传递指定参数;
  121. res=add(1,2)
  122. print(res)
  123. #形参b取默认值;
  124. res=add(1)
  125. print(res)
  126. res=add()
  127. print(res)

 

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/81778400

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。