zoukankan      html  css  js  c++  java
  • PythonDay10

    第十章函数进阶

    今日内容

    • 函数的参数 动态参数

      • 动态接收位置参数

      • 动态接收关键字参数

    • 函数的注释

    • 名称空间

    • 函数的嵌套

    • global、nonlocal

      • global的宗旨

      • nonlocal宗旨

    1.函数的参数 动态参数

    动态接收位置参数:
    # 动态位置参数
    # def eat(*args): # 函数的定义阶段 *聚合(打包)
    #     print(args) # tuple
    #     print(*args) # 函数体中的*表示打散(解包)
    def eat(*args):
    pirnt('我想吃',args)

    eat('大米饭', '米饭', '饭')
    # 收到的结果是一个tuple元组
    动态接收参数的时候:动态参数必须在位置参数后面
    无论是否给*args值,它都是一个元组(),若不给值,就是()
    def eat(a, b,*args):
    print("我想吃",args,a,b)

    eat('大米饭','米饭','饭')
    # 我想吃 ('饭',) 大米饭 米饭
    # 默认参数放在最后边,通过关键字传参
    def eat(a,b,*args,c='白菜'):
      print('我想吃',a,b,args,c)
    eat('猪肉','粉条','豆腐','大葱')

    结果:
    我想吃 猪肉 粉条 ('豆腐', '大葱') 白菜

    注意: 形参的顺序: 位置参数 , 动态参数 , 默认参数

    动态接收关键字参数:
    def func(*args,**kwargs):
      print(args,kwargs)

    lst = [1,23,5]
    dic = {'k1':4, 'k2':5}
    func(*lst,**kwargs)
    func(1,23,5,k1=4,k2=5)

    最终顺序:

      位置参数 > *args(动态位置参数) > 默认值参数 > **kwargs(动态默认参数)

    总结
    # 总结:
      # *args(聚合位置参数)     大家伙都用的名字, 可以进行修改但是不建议修改
      # **kwargs(聚合关键字参数) 大家伙都用的名字, 可以进行修改但是不建议修改

      # 函数的定义阶段 * 和 ** 都是聚合
      # 函数体中 * 就是打散, *args将元组中的元组进行打散 *kwargs将字典的键获取

      # 实参和函数体:
      #     * 打散
      #     ** 实参时能够使用

    2.函数的注释

    def func(a, b):
      """
      计算两数相加
      :param a:
      :param b:
      :return: a + b
      """
    return a + b
    func(1, 10)

    # print(a.__doc__)
    # print(b.__doc__) # 查看函数的注释
    # print(a.__name__) # 查看函数的名字

    3.名称空间

    • 内置空间:Python解释器自带的空间

    • 全局空间:py文件中顶格写的就是全局空间

    • 局部空间:函数中就是局部空间

      取值顺序:

      # 1.局部空间
      # 2.全局空间
      # 3.内置空间

      加载顺序:

      # 1.内置空间
      # 2.全局空间
      # 3.局部空间
      

    4.函数的嵌套

    不管在什么位置,只要是函数名()就是在调用一个函数
    

    5.global、nonlocal

    global : 只修改全局,如果全局没有就创建一个全局变量

    nonlocal : 只修改局部,修改离nonlocal最近的一层,上一层没有继续向上上层查找.只限在局部

    a = 10
    def func():
        global a			# 声明之后,就可以对全局变量进行修改
        a += 1
        print(a)
    func()
    
    # nonlocal只能修改离nonlocal最近的一层,且不包括全局变量,如果没有就报错
    def run():
    	a = 19
    	def func():
    		print('123')
    		def fun():
    			nonlocal a
    			a = 10
    			print(a)
    		fun()
    run()
    
  • 相关阅读:
    赫尔维茨公式
    从解析几何的角度分析二次型
    Struts 1 Struts 2
    记一次服务器被入侵的调查取证
    契约式设计 契约式编程 Design by contract
    lsblk df
    Linux Find Out Last System Reboot Time and Date Command 登录安全 开关机 记录 帐号审计 历史记录命令条数
    Infrastructure for container projects.
    更新文档 版本控制 多版本并发控制
    Building Microservices: Using an API Gateway
  • 原文地址:https://www.cnblogs.com/xuyuwei/p/11360039.html
Copyright © 2011-2022 走看看