今日内容概要

  • 函数参数的两大分类
  • 位置参数和关键字参数
  • 默认参数
  • 可变长参数(重点)
  • 名称空间的概念

今日内容详细

函数参数的两大分类

1. 形式参数
	在函数定义阶段从左往右依次写入的变量名就叫形式参数,简称"形参"
    	def func(a,b):
            pass
        
        # 这里的a和b就是形式参数,形参
2. 实际参数
	在函数调用阶段从左往右依次写入的变量值就叫实际参数,简称"实参"
    	func(1, 2)
        # 这里的1和2就是实际参数
 
'''
	形参和实参是什么样的关系
		形参相当于变量名,实参相当于变量值
		他们两个在函数调用阶段临时绑定,函数运行结束立马断开联系
'''

# 形参的表现形式就一种
# 实参的表现形式有多种

  

python help怎么查看函数 python怎么查看函数参数_变量名

 

 

 位置参数

    从左往右一次写入的数据就是位置参数

位置形参

    在定义函数的时候,从左往右依次写入的变量名就是位置形参

位置实参

   在函数调研阶段,从左往右依次写入的变量值就是位置实参

练习

    写一个可以比较两个数字大小的函数,哪个大返回哪个值

'''
位置形参和位置实参的关系:
位置实参从左往右依次传递给位置实参(一一对应)
'''

python help怎么查看函数 python怎么查看函数参数_python help怎么查看函数_02

 

 

 关键字参数

       my_max(b=1, a=2) # 关键字参数
 通过形参名=变量值的形式传递

python help怎么查看函数 python怎么查看函数参数_名称空间_03

 

 

 

默认参数

在函数定义阶段的两种情况

1.如果没有定义给形参传递值,就使用默认的

2.如果给形参传递了值,就用提供的值

# 用户注册功能:
def register(name, age, gender='male'):
print('%s:%s:%s' % (name, age, gender))

 

python help怎么查看函数 python怎么查看函数参数_变量名_04

 

 如果 gender=[]的时候

 

 

 

python help怎么查看函数 python怎么查看函数参数_变量名_05

 

# 练习题2:

x = 100

def index(a, b, c=x):
print(a, b, c)

x = 200
index(1, 2)

'''

第一种解释:
函数在定义阶段,已经把值固定死了
第二种解释:
变量名与变量值在内存中的关系判断

python help怎么查看函数 python怎么查看函数参数_函数调用_06

 可变长参数

1.无论在函数调用阶段传递多少个位置实参都可以

def index(x, y, *a):   用(*形参)实现
print(x, y)
print(a)

'''
*在形参中的使用:
接收多余的位置实参,把多余的实参赋给*号后面的变量名,(元组形式)
'''

python help怎么查看函数 python怎么查看函数参数_函数调用_07

 

 2.无论在函数调用阶段传递多少个关键字实参都可以

def index(a, b, **x):
       print(x)

'''
**号在形参中的使用:
接收多余的关键字参数,把多余的关键字参数赋给了**号后面的变量名,以字典的格式
'''

python help怎么查看函数 python怎么查看函数参数_函数调用_08

 

 3.无论在函数调用阶段传递多少个位置参数和关键字参数都可以

                

def index(u, z=100, *a, **b, ):
print(a)
print(b)
print(u)

# index()
index(1, 2, x=1, y=2)
'''
默认参数只要不放在**后面都可以
*号后面和**号后面的变量名可以任意命名
但是,在python中推荐使用
*args => arguments
**kwargs => keyword arguments
def func(a, b, c, *args, **kwargs):
pass
'''

 

  

python help怎么查看函数 python怎么查看函数参数_python help怎么查看函数_09

 *在实参中的应用

可以把元祖或者列表中的元素作为实参传值给形参

python help怎么查看函数 python怎么查看函数参数_函数调用_10

 **号在实参中使用

def func(username, password):
print(username, password)

d = {'username': 'jason', 'password': 222}
# func(d['x'], d['y'])
func(**d) # func(username='jason',password=222)
func(username='jason', password=222)

python help怎么查看函数 python怎么查看函数参数_函数调用_11

 

名称空间的概念

 

1.什么是名称空间?

       就是绑定变量名和变量值的地方

2.名称空间的分类

        (1)内置名称空间

               在python解释器中

                如:len(),print(),open()

          (2)全局空间

             在py文件中,顶格写的都是全局名称空间

             name='ly'

             def ():  #func函数名就在全居民称空间中

              a=[11,22,33]

               for i in a: # i 也在全局名称空间中

               print(i)

               while True:

               x=123  #也是

           查看全局名称空间

            print(globais())

python help怎么查看函数 python怎么查看函数参数_函数调用_12

 

             局部名称空间

            在函数体中存在的都是局部的

def index(a, b, c):
x = 222
y = 111
# 查看局部的名称空间
print(locals())
index(1, 2, 3)

 

python help怎么查看函数 python怎么查看函数参数_名称空间_13

 

 名字的查找顺序

         查找顺序:

             1.看自己的位置在哪里:

               如果是在局部:局部》全局》内置

               如果是在全局:全局》内置

局部名称空间的嵌套:

需要一层层调用

print(x)》666

def f1():
    # x = 222

    def f2():
        # x = 333

        def f3():
            # x = 444

            def f4():
                # x = 555

                def f5():
                    # x = 666
                    print(x)
                f5()
            f4()
        f3()
    f2()
f1()

名称空间的作用域

   即名称空间的作用范围

1.内置名称空间

在任意位置都可以使用

2.全局名称空间

在整个py 文件中都可以使用

3.局部名称空间

一般情况下在自己的函数中使用

   global和nonlocal关键字的使用

 global在局部名称变量中改变全局名称变量

python help怎么查看函数 python怎么查看函数参数_函数调用_14

 

 

python help怎么查看函数 python怎么查看函数参数_函数调用_15

       在局部修改全局的变量:

   1. 修改的变量时不可变的类型,需要global关键字声明
   2. 修改的变量是可变的类型,不需要global关键字声明

 nonlocal在内部的局部名称中,修改外部名称的局部名称变量

python help怎么查看函数 python怎么查看函数参数_函数调用_16