码迷,mamicode.com
首页 > 编程语言 > 详细

python笔记4

时间:2018-04-22 00:59:42      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:关系   位置实参   strong   实参   局部变量   rap   装饰器   time   名称   

参数
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())

python笔记4

标签:关系   位置实参   strong   实参   局部变量   rap   装饰器   time   名称   

原文地址:https://www.cnblogs.com/liuqimin/p/8904620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!