zoukankan      html  css  js  c++  java
  • 12 Python之函数进阶

    1. 动态传参

      *, ** :

      形参: 聚合

      位置参数* -> 元组

    def func(*args, a, b, c):
        print(a, b , c, args)
    func(1,2,3,4,5,6,7, a=8, b=9,c=10)

      关键字** -> 字典

    def func(**kwargs):
        print(kwargs)
    func(a=1, b=2, c=3, haha="呵呵", good="not bad")

      实参: 打散

      列表, 字符串, 元素 -> *

      字典 -> **

      形参顺序:

      位置, *args, 默认值, **kwargs

      "无敌传参"

        def func(*args, **kwargs): arguments参数 keyword-arguments关键字参数

          pass

    复制代码
    def hash(*args, **kwargs):
        pass
    def id(*args, **kwargs): 
        pass
    def input(*args, **kwargs): 
        pass
    复制代码

      这几个函数都是这种"无敌传参"的模式

    2. 作用域和名称空间

      名称空间: 用来存放名字(变量, 函数名, 类名, 引入的模块名)的

      1. 全局名称空间: 我们在py文件中自己写的变量, 函数.....

      2. 内置名称空间: 我们python解释器提供好的一些内置内容(print, input....)

      3. 局部名称空间: 在我们执行函数的时候.会产生一个局部名称空间. 放的是: 函数内部的内容(变量, 函数,类...)

      名称空间可能会有无数个, 局部名称空间而言. 相对是独立的.一般互不干扰

    作用域:

      1. 全局作用域: 内置+全局

      2. 局部作用域: 局部

      globals() 查看全局作用

      locals() 查看当前作用域

    复制代码
    def num():
        a = 20
        b = 30
        print(locals()) # 查看当前作用域中的内容
        print(globals()) # 查看全局作用域中的内容
    num()
    复制代码

    3. 函数的嵌套

      在函数中声明函数

      在内部函数中使用变量的时候, 查找顺序: 先找自己 -> 上一层 -> 上一层..全局 -> 内置

    复制代码
    def func1():
        print("1")
        def func2():
            print("2")
            def func3():
                print("3")
            print("4")
            func3()
            print(5)
        print("6")
        func2()
        print("7")
    func1()   #  1 6 2 4 3 5 7
    复制代码

    4. nonlocal和global关键字

      global: 在局部引入全局变量

      nonlocal: 在局部...内层函数引入外层离他最近的那个变量.

      只举一个全局变量的例子

    复制代码
    flag = False 
    
    def login():
        global flag  # 全局变量的调用
        uname = input("用户名:")
        upwd = input("密码:")
        if uname == "alex" and upwd == "123":
            flag = True
        else:
            flag = False
  • 相关阅读:
    Java SSM入门(四)——Mybatis延迟加载、缓存、注解和小结
    Adam算法及相关Adaptive Learning Rate 自适应学习率
    20191229
    关于安装matlab FEAST过程(关于mex与工具包安装,附libsvm2.23和2017a安装教程网址)
    标准化和归一化(综合)
    [转]特征选择-weka搜索函数
    [转]怎样理解随机种子
    对神经网络输入是否做归一化
    点击邮箱名跳转到相对应的邮箱登陆页面
    在vue中使用document.execCommand实现复制文本的功能
  • 原文地址:https://www.cnblogs.com/a2534786642/p/10085487.html
Copyright © 2011-2022 走看看