函数进阶

动态传参:

  动态位置参数(万能传参):*args    获得结果是一个元祖  顾名思义就是可以接受所有位置参数    如果有位置参数必须放在放在动态位置参数前面

  动态关键字传参:**kwargs  获得一个字典    可以接收所有关键字参数   因此所有关键字参数必须放在动态关键字参数前面

#排序:位置参数>动态位置参数>关键字参数>动态关键字参数

lst=[1,2,3,4]

def func(*args)   #聚合

  print(*args)   #1,2,3,4   把聚合的结果打散

func(*lst)            #(1,2,3,4)   按顺序解包  func(1,2,3,4)

 

dic={"name":"alex","age":18}

def func(**kwargs)

  print()             #这块可以用*args,但是不可以用**kwargs

func(**dic)

名称空间:

  全局名称空间:我们直接在py文件中,函数外声明的变量属于全局命名空间

  局部命名空间:在函数中声明的变量会放在局部命名空间,也就是函数里面的是局部空间

  内置命名空间:内置的就是python本身自带的东西,存放在python解释器中为我们提供的名字,list,tuple,str,int这些都是内置函数命名空间

# a = 10       # 
#
# def func():  # 函数里的是局部空间
#     b = 5
#     print(b)
#
# func()  

加载顺序:内置>全局>局部

取值顺序:局部>全局>内置

作用域:就是作用范围,按照生效范围来看分为全局作用域和局部作用域

  全局作用域:在整个文件的任何位置都可以使用     全局命名空间+内置命名空间

  局部作用域:在函数内部可以使用    局部命名空间

globals():查看全局作用域中的内容

locals(): 查看局部作用域中的变量和函数信息

 

函数的嵌套:

global:不在局部创建这个变量,而是直接使用全局的变量

例如;

a=100
def func():
    global a    #加了个global表示不在局部创建这个变量了,而是直接使用全局的a
    a=28
    print(a)
func()
print(a)  

nonlocal: 改变最近的父级变量,如果上级没有能够改变的就继续向上走,直到最外层函数就停止

a=10
def func1():
    a=20
    def func2():
        nonlocal a
        a=30
        print(a)  #30
    func2()
    print(a)    #30
func1()

函数名的本质(函数是第一类对象的概念)

1)函数名可以赋值

def f():
    print(123)

f()
a=b=c=abc=f   #函数名的赋值
##a=b=c=abc=f()   拿到的是func的返回值
abc=f
a=f
b=f
c=f
f()
abc()
a()
b()
c()

 2) 函数可以作为容器的一项可以作为容器,容器类型:列表,元祖,字典,集合

def f1():
    print("哇哈哈")

def f2():
    print('qqxing')

l=[f1,f2]
print(l)
f1_func=l[1]
f1_funcfunc()
l[1]()
for f in l:
    f()

 3) 函数名可以作为参数

def login():
    print("欢迎")
def index(auth):
    auth()
    print("欢迎来首页")

index(login)

  4)函数名可以作为一个函数的返回值

def func()
	pass
func 是函数名
func()是函数调用
func()的得到的结果就是返回值

  

posted @ 2018-11-01 16:48  Stone李  阅读(152)  评论(0编辑  收藏  举报
var a_idx = 0; jQuery(document).ready(function($) { $("body").click(function(e) { var a = new Array("","","","","","","♪","",""); var $i = $("").text(a[a_idx]); a_idx = (a_idx + 1) % a.length; var x = e.pageX, y = e.pageY; $i.css({ "z-index": 999999999999999999999999999999999999999999999999999999999999999999999, "top": y - 20, "left": x, "position": "absolute", "font-weight": "bold", "color": "rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")" }); $("body").append($i); $i.animate({ "top": y - 180, "opacity": 0 }, 1500, function() { $i.remove(); }); }); });