【第10天】python全栈从入门到放弃

2019-08-04  本文已影响0人  36140820cbfd

1.动态参数

*位置参数

代码块
age=(1,3,4,5,65,12)

def student(*name):  # **name动态接收位置参数
    print(name)

student('wangsiyu','nezha','xuwei')    #   ('wangsiyu', 'nezha', 'xuwei')
student(*age)   #*表示打散     (1, 3, 4, 5, 65, 12)

**关键字参数

代码块
def student(**name):  # **food动态接收关键字参数

    print(name)   #{'name1': 'wangsiyu', 'name2': 'nezha', 'name3': 'xuwei'}

student(name1='wangsiyu',name2='nezha',name3='xuwei')

2.命名空间和作用域

2.1 命名空间

  1. 内置命名空间: python解释内部运行时的变量函数

  2. 全局命名空间: 我们在py文件中直接声明出来的变量,函数

  3. 局部命名空间: 在函数内部声明的变量和函数.

2.2作用域

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

2.局部作用域:局部

globals() 查看全局作用域中的名字

locals() 查看当前作用域中的名字

global: 把全局变量拿到局部来用.

nonlocal: 把离他最近的一层的变量拿过来.不会找全局

3. 写函数. 给函数传递任意个整数. 返回这些数的和

代码块:第一种方法
def sum_num(*num):
    print(sum(num))

sum_num(1,2,3,4,5)   #15

代码块:第二种方法
def sum_num(*num):
    print(type(num))   #<class 'tuple'>
    sum=0
    for i in num:
        sum+=i
    print(sum)


sum_num(1,2,3,4,5,6)   #21

4.写一个函数,可以接收位置参数,和关键字参数

代码块
def func(name,*args,**kwargs):
    print(name)    #ec14
    print(args)    #('wangsiyu', 'gongxudong', 'nezha')
    print(kwargs)   #{'count': 24, 'teacher': 'wanjun', 'location': 'liao ning province'}

func('ec14','wangsiyu','gongxudong','nezha',count=24,teacher='wanjun',location='liao ning province')

5.在函数中实参形参各个参数的位置

形参: 1.位置参数, 2, *args, 3.默认值参数, 4. **kwargs
实参:1. 位置参数. 2.关键字参数. 3. 混合参数

代码块
def func(name,*args,teacher='万君',**kwargs):
    print(name)    #ec14
    print(args)    #('wangsiyu', 'gongxudong', 'nezha')
    print(teacher)   #万君
    print(kwargs)    #{'count': 24, 'girl': 18}

func('ec14','wangsiyu','gongxudong','nezha',count=24,girl=18)

6. 变量取值就近原则

代码块
a=20
def func():
    a=2
    print(a)
    print(globals())  #获取内置和全局的变量名字
    print(locals())   #获取当前函数内部的变量
func()

7.函数的嵌套

函数的嵌套
代码块
def func1():
    print('1')
    def func2():
        print(2)
        def func3():
            print(3)
            func4()
        print(4)
        func3()
    def func4():
        print('game over')
    print(666)
    func2()
func1()

#res: 1  666   2    4     3   gameover

8.全局变量global

代码块
a=10
def func():
    global a   #会重新给全局变量a赋值
    a=666
    print(a)
func()
print(a)

9. nonlocal(改变距离他最近一层的局部变量的值)

代码块
a=20
def func1():
    a=25
    print(a)
    def func2():
        nonlocal a
        a=30
        print(a)

    func2()
    print(a)
func1()    #25  30  30 
print(a)    #20 全局变量

10.实参传递的打散

代码块
 lst = ["马虎疼", "大洋哥", "小花生", "毛尖妹妹"]

func(*lst)  # 实参, 打散, 迭代产生的

dic = {"name":"太白","alex":"wuse"}

func(**dic)# 把字典打散. 以key=value形式进行传参
别跑,点个赞再走
上一篇 下一篇

猜你喜欢

热点阅读