zoukankan      html  css  js  c++  java
  • python笔记4

    参数
    1 默认参数只在赋值阶段被赋值,之后变更不会影响
    2 可变长度的参数
    1 接受溢出的位置实参 * ,元组存成形式 然后赋值给* 后面的变量名
    1 在位置实参中用

    2 在实参中用 *
    def foo(x,y,z):
    print(x,y)
    print(z)
    foo (1,2,
    (12,34,5,6,7)) #返回(12, 34, 5, 6, 7)
    foo (1,2,(12,34,5,6,7)) #返回((12, 34, 5, 6, 7),)
    2 接受dict,给位置实参,并复制给变量名kwargs
    def test_kwargs(x,y,
    z):
    print(z)
    test_kwargs(1,s=3,d=4,k=5,y=2)
    s = 3,d=4,k=5被 kwargs接收
    实参赋值
    3 def test_kwargs(x,y,z):
    print(z)
    test_kwargs(1,
    {'s':3,'d':4,'k':5,'y':2})
    这个时候z只接受 s d k 不接受 y

    函数嵌套
    def t():
    def t2():
    return

    namespaces 名称空间
    存放名字与值得绑定关系

    名称空间的分类
    内置名称空间
    py自带的名字 len max sum
    创建
    销毁 关闭而销毁
    全局名称空间
    全局级别的名字
    局部名称空间
    存放函数内部的名字
    函数执行时候被创建

    名称空间定位
    len = 10
    def f1()
    len=111
    def f2()
    f2()

    len(1000)
    f1()

    名称空间在定义时候定的

    作用域 域=范围

    全局范围 内置名称空间的名字 全局名称空间中的

    特点 全局有效,全局存活

    局部范围 局部名称空间的

    locals 局部
    globals 全局

    def f1():
    x = 10
    def f2():
    nonlocal x ###声明x是当前函数外层的变量 强调
    x = 11
    f2()
    print(x)

    f1() ##x = 11

    x=111
    def f1():
    x = 10
    def f2():
    global x ##查找全局变量

        x = 11
    f2()
    print(x)
    

    f1()

    1、作用域即范围

        - 全局范围(内置名称空间与全局名称空间属于该范围):全局存活,全局有效
    

      - 局部范围(局部名称空间属于该范围):临时存活,局部有效

    2、作用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关,如下

    x=1
    def f1():
    def f2():
    print(x)
    return f2
    x=100
    def f3(func):
    x=2
    func()
    x=10000
    f3(f1())

    3、查看作用域:globals(),locals()

    LEGB 代表名字查找顺序: locals -> enclosing function -> globals -> builtins
    locals 是函数内的名字空间,包括局部变量和形参
    enclosing 外部嵌套函数的名字空间(闭包中常见)
    globals 全局变量,函数定义所在模块的名字空间
    builtins 内置模块的名字空间

    闭包函数的应用

    def outter():
    x = 1
    def func():

        print(x)
    return func
    

    f = outter()

    def func_f():
    x = 111
    print("func_f")
    f()

    func_f() ##结果x =1

    装饰器
    import time

    def timmer(func):
    def wrapper(args,kwargs):
    start_time = time.time()
    res = func(*args,**kwargs)
    stop_time = time.time()
    print("run time is {}".format(stop_time-start_time))
    return res
    return wrapper

    @timmer

    def foo():
    time.sleep(3)
    print("from foo")

    timmer(foo())

  • 相关阅读:
    Chrome 29 新功能一览
    7 款免费的 Metro UI 模板
    JPG渐进 & PNG/PNG24 交错测试
    你的钱,以后是放银行还是放支付宝?
    Bise IE6 在你的网站上加上它让IE滚蛋吧
    单例模式常见场景
    10 个最新的开发者工具
    大流量网站的底层系统架构
    DNS解析全过程及原理
    IE条件注释详解
  • 原文地址:https://www.cnblogs.com/liuqimin/p/8904620.html
Copyright © 2011-2022 走看看