• 函数名的定义规范也得符合关键字的定义规范

定义:def 函数名():

def students_info():

调用函数

students_info()

有参数,无返回值

def students_info(name, sex):
print(name,"is",sex)

students_info("小明", "男")

有参数有返回值

def sum_num(num1, num2):
return num1+num2

sum1 = sum_num(1, 2)
print(sum1)

无参数无返回值

def print_info():
print("*")
print("游戏开始")

print_info()

无参数有返回值

def print_info():
print("*")
print("游戏开始")

return a

a=print_info()

return语句

return 的作用就是返回值

函数中return语句后面的语句将不会再执行

有多个返回值的语法格式是:return a,b 或者是 return (a,b),但是不加括号的更符合语法规范

def return_num():
return 1,2

a_tuple = return_num();print(a_tuple) # 会输出:(1, 2)

如果要访问里面的某个值可以用索引来访问 a_tuple[0]

又或者是定义多个参数来分别接收返回值

a,b=return_num() # 1的值会赋给a, 2的值会赋给b

默认值

默认值须放在最后,在传参时如果不想该值是默认就得传入参数,反之则不用

def student_info(name, sex="男"):
print(name, "is", sex)

student_info("小明") # 会输出:小明 is 男

有多个默认值时,但只想改变其中一个默认值,在传参时就得指定参数是传给哪个的

def student_info(name, sex="男",student_class=1):
print(name, "is", "and class in",student_class)

student_info("小明",student_class=3)

形参和实参:定义函数时的叫形参,调用函数是传入的叫实参

形参可以为元祖或者字典:args(元组),kwargs(字典),其实加任意字符就代表元组,args只是通用写法

传入元组

def hunhe(a,*args):
print(a, args)

hunhe(1,34234,2323) # 1匹配为a,其余的都将当做元组的值传入,
'''
假设传入的是(1,(34234,2323))
将输出:1 ((34234, 2323),) 可知将后面括号内的值当成了一个元素
'''

传入字典

def hunhe(a, **kwargs):
print(a, kwargs)

hunhe(1, name="小明", sex=13) # 依旧是自动匹配,会输出:1 {'name': '小明', 'sex': 13}

传入字典和元组

def hunhe(args, *kwargs):
print(args,kwargs)

这种传参会出错
hunhe((1,2,3), {1:2, 2:3, 4:5})
输出:((1, 2, 3), {1: 2, 2: 3, 4: 5}) {}
字典成了空

正确做法:

def hunhe(*args, **kwargs):
    print(*args,*kwargs)

a_tuple = (1,2,3)
a_dict = {1:2, 2:3}
hunhe(a_tuple, a_dict)
#或者
#hunhe((1,2,3), {1:2, 2:3})

或者是:

def hunhe(*args, **kwargs):
    print(args,kwargs)


hunhe(1,23,4,a=1,b=2,c=3)

两个都输出:

(1, 23, 4) {'a': 1, 'b': 2, 'c': 3}

同时传入字符,字典,元组

def hunhe(a, *args, **kwargs):
    print(a, args, kwargs)


hunhe(1, 2, 3, 4, w=2, e=3)

#输出:1 (2, 3, 4) {'w': 2, 'e': 3}

或者是:

def hunhe(a, *args, **kwargs):
    print(a, *args, *kwargs)


hunhe(1, (1, 2, 3), {1: 2, 2: 2, 3: 4})

#输出:1 (2, 3, 4) {'w': 2, 'e': 3}

注意事项:

当 def hunhe(a, args, *kwargs):里面的形参名有a时,在定义调用函数进行传参时另外不能有相同的变量出现

例如:

def hunhe(a, *args, **kwargs):
    print(a, args, kwargs)


hunhe(1, 2, 3, 4, w=2, a=3)

全局变量和局部变量

  • 在函数外定义的就是全局变量
  • 在函数内定义的就是局部变量
  • 在函数内针对变量的赋值修改不会改变函数外的变量的实际值

在函数内修改全局变量

global

a = 1
def quanju():
global a
a = 2
quanju()
print(a) # 会输出2 global a 的作用就是声明a是一个全局变量

使用方法修改全局变量

  • 在函数内通过方法修改全局变量是会改变它的值
  • 用+拼接列表实质上用的就是extrend方法,所以会改变全局变量
Last modification:November 17th, 2020 at 07:41 pm
创作不易,请随意赞赏