zoukankan      html  css  js  c++  java
  • day10-2018-10--30 函数进阶

                                    动态传参

    # def chi(good_food, good_food1, junk_food, drink, sweet):
    #     print(good_food,good_food1, junk_food, drink, sweet)
    #
    # chi("胡辣汤", "烤全羊", "薯条", "奶茶", "圣代")
    
    
    # 动态传参
    # *表示动态传参. 可以接受所有的位置参数
    # 传参的时候自动的把实参打包成元组 交给形参
    
    # def chi(*food):
    #     print(food)
    
    # chi() # 动态传参可以不传参数
    # chi(good_food = "胡辣汤") # 关键字传参
    # chi("胡辣汤", "疙瘩汤", "西红柿鸡蛋汤")
    # chi("大猪蹄子","大汉堡","薯条","圣代","雪顶","拿铁")
    
    # ** 表示接收关键字的动态传参
    # 接收到的内容放在字典里
    # def chi(**food):
    #     print(food)
    #
    # chi(good_food = "哈哈", junk_food="呵呵", drink="吼吼")
    # # chi("大猪蹄子","大汉堡","薯条","圣代","雪顶","拿铁")
    
    # 顺序  位置 > *args > 默认值参数 > **kwargs
    # 在以上顺序中可以任意的进行搭配
    
    # 实参: 位置 > 关键字
    # 位置, *args, 默认值参数, **kwargs
    # def chi(a = "男", **kwargs ):
    #     print(a, kwargs)
    # chi(1, b = "女")
    
    # 无敌传参
    # 顺序  位置 > *args > 默认值参数 > **kwargs
    # def func(*args, **kwargs):
    #     print(args, kwargs)
    # func(1,2,"哈哈",3,4,5,a=6,b=7,c=8,d=9, e=18 )
    
    
    # lst = ["火腿肠","方便面","有调料包","被捏碎了", "韭菜", "大白菜"]
    # def chi(*food): #  形参上的* : 动态接收位置参数
    #     print(food)
    #
    # # 把列表中的所有食物传递给chi
    # chi(*lst) # 把一个列表或者元组或者字符串.打散成参数. 传递给形参
    #
    # dic = {"张无忌":"倚天屠龙记", "乔峰":"天龙八部", "郭靖":"射雕"}
    #
    # def da(**kwargs): # 动态传参. 接收关键字参数
    #     print(kwargs)
    # # da(张无忌=dic['张无忌'])
    # da(**dic)   # 把字典打散成关键字参数
    
    # *, ** : 在形参: 聚合, 实参: 打散

                              名称空间和作用域

    # 在我们程序运行的时候, 首先 加载的并不是我们的代码
    # 先加载的是内置的一些东西
    # a = 10
    # def chi():
    #     a = 20
    #     print(a)
    #
    # print(a) # 10
    # chi()   # 20
    # print(a) # 10
    
    # def print(*args):
    #     pass
    #     # print(args) # maximum recursion depth exceeded
    #
    # def func():
    #     print("呵呵")
    #
    # func()
    def chi():
        p = 30
        print(locals()) # {'p': 30}   locals()可以查看局部作用域中的内容
        print(p)
    # chi()
    print(locals()) # 查看当前作用域中的名字
    print(globals())
    # a = 10 # 全局
    # b = 20
    # print(globals()) # 查看全局作用域中(内置+全局)的内容

                                      函数的嵌套  

    # 一个套一个
    def outer():
        print("我是outer")
        # 在函数内部声明的函数, 只能在函数内部访问
        def inner():
            print('我是inner')
        inner()
        print("我是outer_end")
    
    outer()
    
    
    
    # def fun2():
    #     print(222)
    #     def fun3():
    #         print(666)
    #     print(444)
    #     fun3()
    #     print(888)
    # print(33)
    # fun2()
    # print(555)
    
    # 33 222 444 666 888 555

                                     global和nonlocal

    # a = 10
    # def func():
    #     global a  # 直接从全局把变量引入进来
    #     a = 20
    #
    #
    #     # a = 20 # 并没有改变全局变量,   创建了一个自己的变量
    #     # 全局变量在局部, 可以用, 但是, 不能改
    #     # a = a + 10
    #     print(a)
    #
    # func()
    # print(a)
    
    
    # def func():
    #     global a # 可以创建(升华)一个局部变量为全局变量
    #     a = 30
    # func()
    # print(a)
    
    
    
    #  nonlocal 在局部, 引入上一层名称空间中的名字. 如果上一层没有, 继续上一层 .....
    
    
    # def outer():
    #     a = 10
    #     def inner():
    #         nonlocal a
    #         a = 20
    #         print(a)
    #     print(a)  # 10
    #     inner()   # 20
    #     print(a)  # 20
    # outer()
    
    
    a = 1
    def fun_1():
        a = 2
        def fun_2():
            nonlocal a
            a = 3
            def fun_3():
                a = 4
                print(a)
            print(a)
            fun_3()
            print(a)
        print(a)
        fun_2()
        print(a)
    print(a)
    fun_1()
    print(a)
    
    # 1234331
  • 相关阅读:
    【缓慢的自学ing】 自己写一个《Minecraft》记录
    Unity随笔3:按钮的"导航"功能
    【随随随随笔】一些STL的糖
    【算法氵】筛法
    【纯感慨】好吃的蒟蒻
    【随随随随笔】OJ错题记录
    【纯感慨】最不擅长的就是配置软件
    【C++Primer笔记】顶层const、常量指针
    hdu 2475 动态树
    hdu 1281 棋盘游戏 网络流
  • 原文地址:https://www.cnblogs.com/VastTry/p/9878972.html
Copyright © 2011-2022 走看看