设为首页 收藏本站
查看: 1096|回复: 0

[经验分享] python--005-函数参数、变量

[复制链接]

尚未签到

发表于 2018-8-11 10:45:04 | 显示全部楼层 |阅读模式
  ·函数的参数
  ··参数
  1、形式参数:parameter--形式参数
  创建函数时,小括号内的参数
  2、实际参数:argument--实参
  函数调用时,小括号内传递进去的参数
  ··函数文档
  1、直接书写字符串
  2、用#标记单行的注释
  3、可以用print(‘内容’)直接输出内容
  #-- coding: utf-8 --
  #这个函数求两个数值之和
  def add(num1,num2):
  '把num1和num2 的和进行返回'#这行字符串是一个注释
  print ('求两个值的和')
  return num1+num2
  print add(1,2)
  函数文档的读取:
  1、函数名.doc   两个下划线 属性名 doc里面存储文本与注释
  int.doc
  2.help(函数名)
  help(str)
  ··关键字参数
  定义了关键字的参数
  1、位置参数:
  直接给参数(和位置有关--一一对应)
  2、关键字参数
  

    def myFunction(num1,num2):  print num1,num2
  

  myFunction(num2='world',num1='hello')
  

  1、位置参数与关键字参数混用的时候,位置参数必须在关键字
  参数的前面
  def myFunction(a,b,c):
  print a,b,c
  myFunction(a='hello','world','python')
  

  返回错误
  

  2、不要给同一个形参多次赋值
  

  def myFunction(a,b,c):
  print a,b,c
  myFunction(a='hello',b='world',b='python')
  

  返回错误
  

  ···默认参数
  

是定义了默认值的参数  

  def myFunction(a='hello',b='world'):
  print a,b
  myFunction('hhe','dsb')
  

  返回hehe das
  

  
1、默认参数与位置参数混用的时候,位置参数必须在默认参数之前,位置参数要前面放
  def myFunction(a='hello',b='world'):
  print a,b
  myFunction(,'dsb')
  

  返回错误
  2、默认参数只能在函数定义阶段赋值一次(仅仅一次)
  

  def myFunction(a='hello',b='world'):
  print a,b
  myFunction()
  

  关键字参数在函数调用时候定义,默认参数在函数定义的时候赋值。
  

  ····可变长参数(收集参数)
  1、在参数前面加上*
  将所有参数打包元祖,进行输出
  

                    def fun(*a):  print a
  fun('hehe','hello')
  

  2、在参数上面加**
  将所有参数打包成字典
  ·······命名关键字参数
  可变长参数后面的参数应该使用命名关键字参数
  

    def fun(*a,b):  print a
  fun('hehe','hello',b='world')
  

  def fun(b,*a):
  print a
  fun('hehe','hello','world')
  

  1、可变长参数必须在位置参数后
  print函数的参数就是可变长参数,输出元祖
  API文档如何查看 help 或者F1
  函数和过程
  函数 function
  过程 procedure
  python 只有函数 ,没有过程
  ····返回值
  

即便没有在函数中写return语句,函数也会返回一个结果,这个结果为None,为空数据类型。  

  
如果要返回多个值,可以直接书写,多个值之间用逗号隔开,返回值为一个元祖。
  

  
···函数变量的作用域
  

  
变量有作用域(变量的可见性)
  

  1、局部变量:local variable
  

        1、定义在函数内部的变量  2、先赋值,后使用
  3、作用范围从定义开始到包含代码块结束
  

  2、全局变量 global variable
  

        1、定义在函数的外部  2、先赋值后使用
  3、作用范围:整个文件,可以被多个函数调用
  4、如果局部变量与全局变量发生冲突,以局部变量为准
  

  def fun1(para1):
  print para1
  def fun2(para1):
  print para1
  a=10
  def fun3(para1):
  a=20
  print para1
  

  fun1(a)
  fun2(a)
  fun3(a)
  

  在函数内部访问全局变量的时候,在函数内部创建一个相同的局部变量,原来局部变量不变
  a=10
  def fun3():
  a=20
  print a
  fun3()
  print a
  3、global 全局变量
  

  a=10  def fun3():
  global a
  a=20
  print a
  fun3()
  print a
  

  结果返回两个20
  

  定义全局变量(如果在函数中修改global定义的变量,全局变量跟着改变)
  

  ·内嵌函数
  定义在函数内部的函数:内嵌函数(内部函数)
  内部函数的整个作用域,都在外部函数之内(从定义开始到包含它的代码块结束)
  

    1、外部函数的局部变量与内部函数的局部变量发生命名冲突,以内部函数的局部变量优先  2.外部函数不能访问内部函数的局部变量
  3.在内部函数中访问外部函数的局部变量时,不能进行a+=1,这样的操作,原因就是a+1中的局部变量a没有赋值。
  

  #lambda表达式
  python 允许使用lambda表达式创建匿名函数
  ···匿名函数
  没有函数名的函数:
  lambda表达式:
  1、关键字:lambda
  2、创建形式:lambda函数的参数:函数的实现
  3、lambda语句构建了一个函数对象,返回一个函数对象的信息,只需要赋值
  

  fun=lambda a:a+1  print fun(3)
  

  4、如果传入多个参数
  

    fun=lambda a,b,c:a+b+c  print fun(2,3,4,)
  

  
··作用
  
1、只需要使用一次,更加精简,不要单独创建函数
  
2、简化代码,提高代码的可读性
  

  函数的嵌套与递归
  ··函数的嵌套:在一个函数中调用其他函数
  解一元二次方程
  

                ax^2+bx+c=0  

  x=frac{-b\pm{\sqrt{b^2-4ac}}}{2a}
  

  def jieFangCheng(a,b,c):
  
#先判断方程有没有解
  if qiuJie(a,b,c):#判断qiuJie()返回的真还是假
  #继续解方程求出所有的解
  delta = b*b-4*a*c
  x1=(-b+delta**0.5)/2*a
  x2=(-b-delta**0.5)/2*a
  print x1,x2
  

  else:
  print '无解'
  def qiuJie(a,b,c):
  delta=b*b-4*a*c
  if delta>=0:
  return True
  else:
  return False
  jieFangCheng(1,1,1)
  

  jieFangCheng(1,1,-1)
  

  ··递归
  递归:自己调用自己
  

        def factorial(n):  if n==1:
  return 1
  return n*factorial(n-1)
  print(factorial(4))
  

  注意:防止无穷递归 与循环不同
  汉诺塔
  

    def han(a,b,c,n):  if n==1:
  print a+'---'+b
  else:
  han(a,c,b,(n-1))
  print a+'----'+b
  han(c,b,a,(n-1))
  han('A','B','C',3)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-550050-1-1.html 上篇帖子: python的pip安装模块报编码错误 下篇帖子: python--练习--99乘法表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表