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

python基础十

时间:2018-03-29 21:22:59      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:实参   list   ict   运用   erro   lob   pos   err   war   

一、动态参数:*args **kwargs

  形态角度:

    最终顺序:位置参数,*args,默认参数,**kwargs

# def func(*args):
#     print(args)
# func(1,2,3,4,5,7,8,9,1,2,3,4,5,6,7,8)
#*args 动态参数,万能参数
#args接受的就是实参对应的 所有位置参数,并将其放在元组中。
#形参对应顺序:
#位置参数,*args,默认参数
# def func(a,b,c,d,*args,e=‘男‘):
#     print(a)
#     print(b)
#     print(c)
#     print(d)
#     print(args)
#     print(e)
# func(1,2,3,4,5,6,7,e=‘女‘)
#**kwargs 动态传参,他将所有的关键字参数(无意义的)放到一个字典中。
# def func(a,b,c,**kwargs):
#     print(kwargs)
# func(1,2,r=4,b1=5,c1=6,c=7,)

# def func(a,b,c,d,*args,e=‘男‘,**kwargs):
#     print(a)
#     print(b)
#     print(c)
#     print(d)
#     print(args)
#     print(e)
#     print(kwargs)
# func(1,2,3,4,5,6,7,v=3,m=7,h=9,e=‘女‘)
# 最终顺序:位置参数,*args,默认参数,**kwargs

# def func1(*args,**kwargs):
#     pass
# func1()

# * 魔法运用
# def func(*args):
#     print(args) #(1,2,30,1,2,33.。。。。。)
# l1 = [1,2,30]
# l2 = [1,2,33,21,45,66]
# tu = (1,2,3)
# func(1,2,30,1,2,33,21,45,66)
# func(*‘qweqrfdsaf‘)
# func(*{‘name‘:‘alex‘,"age":12})
# func(*l1,*l2)
# def func(*args):
#     print(args)
# func(1,2,3,10,20,80)

# def func(**kwargs):
#     print(kwargs)
#
# dic1 = {‘name1‘:‘alex‘,‘age1‘:46}
# dic2 = {‘name‘:‘老男孩‘,‘age‘:56}
# func(**dic1,**dic2)

# 在函数的调用执行时,
#   *可迭代对象,代表打散(list,tuple,str,dict(键))将元素一一添加到args。
#  **字典,代表打散,将所有键值对放到一个kwargs字典里。

# 在函数定义时, *args,**kwargs代表的是聚合。
# def func(*args,**kwargs):
#     print(args)
#     print(kwargs)
#
# dic1 = {‘name1‘:‘alex‘,‘age1‘:46}
# dic2 = {‘name‘:‘老男孩‘,‘age‘:56}
# func(*[1,2,3,4],*‘asdfsad‘,**dic1,**dic2)

# def func(*args,**kwargs):
    #args = (1,2,3,4)
    #kwargs = {‘age‘: 56, ‘name‘: ‘老男孩‘}
    # print(*args)
    # print(**kwargs) #(age = 56 ,name = 老男孩)
# dic1 = {‘name1‘:‘alex‘,‘age1‘:46}
# dic2 = {‘name‘:‘老男孩‘,‘age‘:56}
# # func(*[1,2,3,4],*‘asdfsad‘,**dic1,**dic2)
# func(**dic2)

二、名称空间(命名空间),临时名称空间,内置名称空间。

  执行函数的时候,他会在内存中开辟一个临时名称空间,存放函数体内的所有变量与值得关系。

  随之函数的执行完毕,临时空间自动关闭。

  全局名称空间,名称空间,命名空间,全局命名空间。

  局部命名空间,临时名称空间,临时命名空间,局部名称空间。

  内置名称空间,所有的内置函数等存储的空间。

  加载顺序:

    内置名称空间 ---》全局名称空间--》(函数执行时)局部名称空间。

  取值顺序:

    函数执行时:局部名称空间--》全局名称空间--》内置名称空间。

# a = 4
# b = 3
# c = [1,2,3,4]
# c1 = {‘name‘:‘alex‘}
#
# def func1():
#     name = ‘老男孩‘
#     print(name)
# func1()
#当执行函数的时候,他会在内存中开辟一个临时名称空间,存放函数体内的所有变量与值的关系,
# 随着函数的执行完毕,临时空间自动关闭。
#input(),print(),len 内置函数

# name = ‘老男孩‘
# def func1():
#     name = ‘taibai‘
#     print(name)
# func1()
# def my_len(argv):
#     return 666
# print(len([12,3,]))
a = 2
print(a)
def func1():
    age = 11
    print(age)
func1()

三、全局作用域,局部作用域。

  全局作用域:全局名称空间,内置名称空间。

  局部作用域:局部名称空间

四、加载顺序与取值顺序,函数的嵌套

# 函数什么时候执行? 函数调用的时候执行。
# 代码从上至下依次执行, 调用函数:函数里面从上至下依次执行。
# print(111)
# def func1():
#     print(333)
#
# def func2():
#     print(444)
#
# def func3():
#     print(555)
#     func2()
#
# func1()
# print(222)
# 111 333 222

# print(111)
# def func1():
#     print(333)
#     func2()
#     print(666)
#
# def func2():
#     print(444)
#
# def func3():
#     print(555)
#
# func1()
# print(222)
# 111 333 444 666 222


# print(111)
# def func1():
#     print(333)
#     func2()
#     print(666)
#
# def func2():
#     print(444)
#     func3()
#
# def func3():
#     print(555)
#
# func1()
# print(222)
# 111 333 444 555 666 222

# a = 2
# b = 3
# def func1():
#     c = 5
#     d = 6
#     print(globals())  # 全局变量放在一个字典中
#     return locals()  # {‘c‘: 5, ‘d‘: 6}
# print(func1())

# print(globals())  # 全局名称空间:所有变量
# print(locals())  # 局部名称空间:所有变量

五、locals(),golbals(),nolocal,golbal

#global
# 1,在局部空间内,声明一个全局变量
# def func1():
#     global name
#     name = ‘老男孩‘
#     print(name)
# func1()
# print(name)
# 2,在局部空间内改变一个全局变量
# a = 4
# def func1():
#     global a
#     a = 5
#     # print(name)
# func1()
# print(a)

#nonlocal
# 1,不能修改全局变量。

# a = 4
# def func1():
#     nonlocal a
#     a = 5
#     # print(name)
# func1()
# print(a)
#在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,
# 并且引用的哪层,从那层及以下此变量全部发生改变。
# a = 4
# def func1():
#     b = 6
#     def func2():
#         b = 666
#         print(b) #666
#     func2()
#     print(b) # 6
#
# func1()

# b = 4
# def func1():
#     global b
#     b = 6
#     def func2():
#         nonlocal b
#         b = 666
#         print(b) #
#     func2()
#     print(b) #
# print(b)
# func1()

六、练习题

# 2、写函数,接收n个数字,求这些参数数字的和。(动态传参)
‘‘‘
def func(*args):
    sum = 0
    for i in args:
        sum += i
    return sum
print(func(2,2,3))
‘‘‘
# 3、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
# a=10
# b=20
# def test5(a,b):
#         print(a,b)
# c = test5(b,a)
# print(c)
‘‘‘
a = 20
b = 10
c = None
‘‘‘
# 4、读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么?
    # a=10
    # b=20
    # def test5(a,b):
    #     a=3
    #     b=5
    #     print(a,b)
    # c = test5(b,a)
    # print(c)
‘‘‘
a = 3
b = 5
c = None
‘‘‘

# 1,有函数定义如下:
# def calc(a,b,c,d=1,e=2):
#     return (a+b)*(c-d)+e
# 请分别写出下列标号代码的输出结果,如果出错请写出Error。
# print(calc(1,2,3,4,5))
# print(calc(1,2))
# print(calc(e=4,c=5,a=2,b=3))
# print(calc(1,2,3))
# print(calc(1,2,3,e=4))
# print(calc(1,2,3,d=5,4))
‘‘‘
2   Error   24
8   10  Error
‘‘‘
# 2,下面代码打印的结果分别是_________,________,________.
def extendList(val,list=[]):
    print(val)
    list.append(val)
    return list
list1 = extendList(10)
list2 = extendList(123,[])
list3 = extendList(a)

print(list1=%s%list1)
print(list2=%s%list2)
print(list3=%s%list3)
‘‘‘
[10,‘a‘]
[123]
[10,‘a‘]
‘‘‘

 

python基础十

标签:实参   list   ict   运用   erro   lob   pos   err   war   

原文地址:https://www.cnblogs.com/qiujie/p/8672014.html

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