python基础 #005 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,函数能提高应用的模块性,和代码的重复利用率。

1.函数基础



1.1 语法

def 函数名(参数列表):

      函数体(代码块)

      return 返回值


1.2 传参


1.2.1 位置传参 & 关键字传参

设def add(x,y):

位置传参:add(4,5)
关键字传参:add(x=4, y=5)


1.2.2 关键字传参

#前面两个数传给x,y后面的数传给agrs并封装成数组
def test(x, y ,*agrs): 
    print(x, y, agrs)
test(1,2,3,4,5,6,7,8)

>>> 1 2 (3, 4, 5, 6, 7, 8)

# ---------------------------------------------------------
# 关键字传参:x,y 只能用关键字传参,否则数据全部被agrs接收
def f(*agrs,x,y): 
    print(agrs,x,y)
f(5,8,6,9,6,x=2,y=6)

>>> (5, 8, 6, 9, 6) 2 6

1.2.3 不定长传参

  • 不定长位置传参
def f(*agrs):
    sum = 0
    for i in agrs: # for能遍历agrs,*agrs把元素封装成元组
        sum += i 
    return sum
f(1,2,3)

>>> 6
# ------------------------------------------------------------------------
def k(*agrs):
    print(agrs)
k(1,2,3,4,5,6)  #封装成tuple

>>> (1, 2, 3, 4, 5, 6)
  • 不定长关键字传参
def f(**agrs):
    print(agrs)
f(a=123,b=456,c=789) #封装成dict

>>> {'a': 123, 'b': 456, 'c': 789}

1.3 参数解构

#列表解构
def f(*agrs):
    print(agrs)
f([1,2,3,4,5,6]) #未解构只有一个元素
>>> ([1, 2, 3, 4, 5, 6],)

f(*[1,2,3,4,5,6]) # 解构的元素封装为元组
>>> (1, 2, 3, 4, 5, 6)

# -------------------------------------------------------------------------
# 字典解构
def add(x,y):
    print(x,y)
    return x+y
add(**{'x':1,'y':2})

>>> 1 2
>>> 3


2. 作用域



2.1 全局变量和局部变量

TIP:函数是一个封装,它会开辟一个作用域,x变量被限制在作用域中,在函数外部x 变量不可见。

x = 100  # 这里的x为全局变量
def f():
    print(x) #全局变量函数内可见
f()

>>> 100

# -------------------------------------------------------------------------
x = 100  # 这里的x为全局变量
def f():
    x += 100 # x = x + 100,理解为 x(局部2) = x(局部1) + 100,但局部1没定义初始值
    print(x) 
f()

>>> UnboundLocalError: local variable 'x' referenced before assignment

2.2 global

使用gobal方法后,当局部变量名和全局变量名相同时,函数中的变量(局部),用全局变量代替

x = 100 # 全局变量
def f():
    global x #函数中局部变量x,用全局变量x替代
    x += 100
    print(x)
f()

>>> 200
posted @ 2023-06-28 22:48  枫_Null  阅读(9)  评论(0)    收藏  举报