zoukankan      html  css  js  c++  java
  • python初体验-函数(2)

    一、函数的多参数

    在学函数的定义时,我们知道了函数名后英文括号内的是函数的参数。就像咖啡机要加咖啡豆和水两个输入一样,Python 中函数的参数个数也非常灵活,支持 0 到多个参数。如果没有参数,括号内就空着,如果有多个参数,每个参数用英文逗号隔开。

    Python 中的参数按传入方式分为两种:

    • 位置参数
    • 关键字参数

    位置参数

    位置参数,顾名思义就是按位置来给参数赋值。

    def func(name, age, height, weight):
      print('name =', name)
      print('age =', age)
      print('height =', height)
      print('weight =', weight)
    
    func('小陈', 18, '165cm', '50kg')

    在上述代码中,按参数定义的位置一一赋值。调用函数后,name 的值为小贝,age 的值为 18,height 的值为 155cm,weight 的值为 40kg。

    关键字参数

    在位置参数中,我们需要记得定义函数时每个位置对应的参数是什么,从而在调用函数时按正确的顺序传入参数,而关键字参数可以减轻我们记忆的负担。

    def func(name, age, height, weight):
      print('name =', name)
      print('age =', age)
      print('height =', height)
      print('weight =', weight)
    func(age = 18, weight = '50kg', name = '小陈', height = '165cm')
    我们在上述代码中可以看到,我们使用 参数名 = 值 的方式给参数赋值。通过这种方式,参数的位置不再重要。我们可以很轻松地给对应的参数赋值,并且能一眼看出各个参数所对应的含义。
    除此之外,我们再学习一种 Python 中常用的小技巧——默认参数
    # 小陈已经不再长高了,我们可以设置身高默认为 165cm
    def func(name, age, weight, height = '165cm'):
      print('name =', name)
      print('age =', age)
      print('height =', height)
      print('weight =', weight)
    
    # 调用函数时可以省略 height 参数
    func('小陈', 18, '40kg')
    # 如果小陈哪天奇迹般地又长高了,我们也可以给 height 重新赋值
    func('小陈', 18, '40kg', '168cm')

    请注意,默认参数一定要放在位置参数后,否则将会出现 SyntaxError: non-default argument follows default argument 的错误

    二、函数的多个返回值
    Python 中使用 return 返回函数的结果,该结果也被称为函数的返回值。
    注意:return 将结果返回后并退出函数,因此执行完 return 语句之后,剩下代码将不会执行。
    和函数的参数一样,函数也支持 0 到多个返回值。因为并不是所有的函数都需要有返回值。但当你的函数没有 return 时,Python 会偷偷在你的函数末尾加上一句 return None
    Tips:None 是 Python 中一个特殊的值,你可以简单地理解为什么都没有(为空)。

    多个返回值也和多参数一样,用英文逗号隔开。

    三、函数的变量作用域
    先看一个例子:
    value = '我是全局变量'
    
    def func1():
      value = '我是局部变量'
      print(value)
      
    def func2():
      print(value)
      
    def func3(value):
      print(value)
      
    func1()
    func2()
    func3('我也是局部变量')
    print(value) 
    运行结果:

    在 Python 中变量作用域分为 全局作用域局部作用域 两种,分别对应了 全局变量局部变量。简单来说就是:函数内定义的变量是 局部变量,函数外定义的变量是 全局变量

    总的来说,Python 会优先在局部作用域内寻找变量,找不到再去外层的全局变量寻找,如果都找不到则报 NameError 的错误。

    当然!只需要在局部变量前加上 global 关键字,全局作用域即可访问局部作用域的变量,看个例子:

    def func():
      global value
      value = '我是提升为全局变量的局部变量'
      print(value)
    
    func()
    # 输出:我是提升为全局变量的局部变量
    print(value)  # 第 8 行
    
    加了 global 关键字后,相当于我们向大家宣布,自己家的里东西大家可以一起共用。
     
     
  • 相关阅读:
    可复用的WPF或者Silverlight应用程序和组件设计(1)——应用程序级别
    优化网站设计(一):减少请求数
    可复用的WPF或者Silverlight应用程序和组件设计(5)——布局重用
    演讲时经常用到的几个小工具介绍
    谈一谈职业素养
    优化网站设计(三):对资源添加缓存控制
    可复用的WPF或者Silverlight应用程序和组件设计(4)——外观级别
    如何在ViewModel中正确地使用Timer(定时器)
    一把锋利的匕首:利用数据绑定语法糖为Flash应用提供富JS接口
    一句话总结.Net下struct和class内存分配方面的区别
  • 原文地址:https://www.cnblogs.com/free-1124/p/11332132.html
Copyright © 2011-2022 走看看