函数的定义和调用

函数的定义和调用

【1】函数定义的语法

'''
def 函数名():
    执行代码的函数体
    return 返回值
'''

【1】函数基本定义

def fun():
    pass
	#...
fun()    

【2】无参无返回值的函数定义

def login():
    username = input("用户名:>>>").strip()
    password = input("密码:>>>").strip()
    if username == 'hope' and password == '261':
        print(f'{username} :>>>> 登陆成功')
login()

【3】有参无返回值的函数

def login(username, password):
    if username == 'hope':
        print(f"{username} :>>> 登陆成功!")
login('hope', '261')

【4】有参数有返回值的情况

def add(x, y):
     result = x + y
     print(result)
     return result
result=add(2,4)    
print(result)

【5】多个参数和多个返回值的情况

def add(x, y):
     return x + y, x * y, x % y

res_1, res_2,res_3 = add(2, 4)
print(res_1,res_2,res_3)

【2】函数的三种调用方式

【1】直接调用

def add(x,y):
    return x+y
 add(1,7)

【2】间接调用

def add(x,y):
    return x+y
res=add
res(1,7)
print(res)

【3】表达式调用

def funtion_1():
    print(f"这是功能1 ")
def function_2():
    print(f' 这是功能2 ')

function_id_dict={1:funtion_1,2:function_2}
function_id=input(" 请输入选择的功能ID: ")
function_id=int(function_id)
#使用get方法从字典中获取与用户输入的功能ID相对应的函数。
func=function_id_dict.get(function_id)
func()

【4】函数作为参数

def add():
    return 2*4
def display(x,y):
    return x%y
#放到另一个函数体里调用
print(display(add(),4))

【3】函数的参数

  1. 位置参数:按照参数定义的顺序传递给函数的参数,是最普遍的参数类型。

    def greet(name, message):
        print(f"{message}, {name}!")
    
    greet("Alice", "Hello")
    
  2. 关键字参数:通过参数名指定传递给函数的参数,可以不按照参数定义的顺序传递。

    def greet(name, message):
        print(f"{message}, {name}!")
    
    greet(message="Hello", name="Alice")
    
  3. 默认参数:在定义函数时为参数指定默认值,如果调用函数时没有传递该参数,则使用默认值。

    def greet(name, message="Hello"):
        print(f"{message}, {name}!")
    
    greet("Alice")
    
  4. 可变长参数:允许接受不定数量的参数。在函数定义中使用 *args 表示接受任意数量的位置参数,在函数调用时会被打包成一个元组。

    def cal_sum(*args):
        total = sum(args)
        return total
    
    print(cal_sum(1, 2, 3, 4, 5))
    
  5. 关键字可变长参数:允许接受不定数量的关键字参数。在函数定义中使用 **kwargs 表示接受任意数量的关键字参数,在函数调用时会被打包成一个字典。

    def index(**kwargs):
        user_dict={'name':'hope'}
        #对字典进行更新
        user_dict.update(kwargs)
        return user_dict
    
    res=index(age=18)
    print(res)
    #{'name': 'hope', 'age': 18}
    
    def display_info(**kwargs):
        for key, value in kwargs.items():
            #对字典进行更新迭代
            print(f"{key}: {value}")
    display_info(name="Alice", age=25, city="New York")
    '''
    name: Alice
    age: 25
    city: New York
    '''
    

​ 6.可变长位置参数和可变长关键字参数混合使用

def register(name,age,*args,**kwargs):
    print(f'姓名:{name}')
    print(f'年龄:{age}')
    if args:
        print("其他位置参数:")
        for args in args:
            print(args)
    if kwargs:
        print("关键字参数:")
        for key,value in kwargs:
            print(f'{key}:{value}')
register('hope',18,'music','piano',性别='男',国家='中国')
输出:	 #姓名:hope
        #年龄:18
        #其他位置参数:
        #music
        #piano
        #关键字参数:
        #性:别
        #国:家
  1. 命名关键字参数
#调用时,需要按照函数定义的顺序提供位置参数(如 name 和 age),然后使用关键字参数(city 和 country)提供命名关键字参数的值。
def print_person_info(name, age, *, city, country):
    print(f"姓名:{name}")
    print(f"年龄:{age}")
    print(f"城市:{city}")
    print(f"国家:{country}")

# 例子的使用
print_person_info("小明", 25, city="北京", country="中国")

无论是默认参数的位置还是关键字参数的位置,都一定要在位置参数后面

posted @ 2023-12-06 17:02  -半城烟雨  阅读(13)  评论(0编辑  收藏  举报