#!/usr/bin/env python # -*- coding=utf-8 -*- ''' 函数 - 将要实现某个功能的代码放在一起,组成一个的模块 格式: 定义一个函数: def 函数名(参数1,参数2...): 实现功能代码 return 返回值 函数遇到return后就不会再运行return后面的代码 如果没有写return,则返回None 调用函数: 函数名() #没有返回值 变量 = 函数名() #有返回值的函数,定义一个变量接收返回值 实参:实际参数,指的是调用函数的时候传进去的值 形参:形式参数,指的是函数定义的时候的参数 给函数传递信息的时候将实际参数交给形式参数的过程叫做传参 形参: 1、位置参数: 2、默认参数:当一个参数的值重复出现的时候,可以设置一个默认值 默认参数必须放在位置参数之后 3、动态参数 -- (补充) 实参: 1、位置参数:按照形参的变量的顺序依次写对应的值 2、关键字参数:使用关键字=值的形式赋值,不需要按顺序 3、混合参数:1.2的混合,位置参数必须在关键字参数之前 ''' # 无参数无返回值 def num_1(): print("我是无参数无返回值函数") num_1() #无参数有返回值 def num_2(): return 1 #返回1 print(num_2()) #有参数无返回值 def num_3(a): print(a) num_3(2) #有参数有返回值 def num_4(a,b): return a if a > b else b #三目运算符 结果1 if 条件 else 结果2 if条件成立返回结果1,否则返回结果2 print(num_4(3,4)) # --------形参--------- def message(name,age,address): # 形参 - 位置参数 print('名字是'+name+'年龄是:'+str(age)+'地址是:'+address) def message_1(name,age,sex = '男'): # 形参 - sex是默认参数 不写默认是男 print('名字是'+name+'年龄是:'+str(age)+'性别是:'+sex) # -------实参--------- message('梁',12,'北京') #位置参数 message(name='梁',address='北京',age=18) # 关键字参数 message('liang',age=18,address='bj') #混合参数 # 形参中的默认参数中 如果不写默认是'男' message_1('xiao',12) # 名字是xiao年龄是:12性别是:男
注意:默认参数如果是一个可变数据类型:
def defult_param(a,l = []): l.append(a) print(l) defult_param('alex') #['alex'] defult_param('egon') # ['alex', 'egon'] defult_param('123',[]) # ['123']
补充:
函数参数 -- 动态传参
我们需要给一个函数传参,而参数又是不确定的,或者我给一个函数传很多参数,我们可以考虑使用动态参数:
动态参数可以分为两种:
用*args接收,返回元组形式
用**kwargs接收,接收关键字参数(比如:food='盖浇饭')返回字典
def func_1(*args,**kwargs): print(args,type(args)) #(1, 2, 3, 4) <class 'tuple'> print(kwargs,type(kwargs)) # {'food': '盖浇饭', 'drink': '脉动'} <class 'dict'> func_1(1,2,3,4,food='盖浇饭',drink='脉动')
顺序: 位置参数, 动态参数*, 默认值参数