python中万物皆为对象
函数
函数的定义
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等…
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
def func():
pass
函数的调用
func()
函数的返回值
return
用来返回数值。当没有返回值时,可以用于跳出函数。即当遇到return时,跳出该函数,并且返回return后面的值
没有返回值
不写return
def func():
print('asd')
print(func())
-----------
None
return
def func():
return
print(func())
-----------
None
return None
def func():
return None
print(func())
-----------
None
有返回值 retrun 可以返回任意类型的值
有一个返回值
def func():
return 1
a = func()
print(a)
--------
1
有多个返回值
def func():
return 1,2,3
a,b,c = func()
print(a,b,c)
--------
1 2 3
函数的参数
形参
在函数定义的时候传递的参数叫做形参
def func(name):
print(name)
这里的name就是形参(形式参数)
位置参数
位置参数,顾名思义,按照位置排序的参数
def func(name,age,sex):
print(name,age,sex)
func('night', 18, 'GG')
---------
name, age, sex这三个参数是按照顺序进行接收,第一个值赋给name, 第二个值赋给age, 第三个值赋给sex
默认参数
默认参数,也叫关键字参数,就是可以设置默认值
def func(name,age=18,sex='GG'):
print(name,age,sex)
func('night')
func('night', age=20, sex='GG')
---------
第一个参数是位置参数,第二个和第三个是默认值参数,即 如果我们在调用的时候不填实参时,会按照默认值进行赋值。如果填了实参就按照实参进行赋值
动态参数
可以填任意数量的参数
*args
def func(*args):
print(args)
func(1,2,3,4)
-------
(1,2,3,4)
args 可以接收任意个参数,并且按照位置顺序传递给args,并且args是以元组的类型进行存储
传参方式二
li = [1,2,3,4]
def func(*args):
print(args)
func(*li)
------
(1,2,3,4)
*li 表示将列表li按顺序打散,并一次性赋值给args
**kwargs
def func(**kwargs):
print(kwargs)
func(a='1',b='2',c='3')
------
{'a':'1', 'b':'2', 'c':'3'}
kwargs 可以接收任意个参数按照关键字传递给kwargs,并且kwargs是以字典的类型进行存储
传参方式二
dic = {'a':'1', 'b':'2', 'c':'3'}
def func(**kwargs):
print(kwargs)
func(**dic)
------
{'a':'1', 'b':'2', 'c':'3'}
**dic 表示将字典按顺序打散,并一次性赋值给kwargs
形参的顺序
位置参数—args—默认参数—kwargs
def func(a,b,*args,c=None,d=None,**kwargs):
print(a,b,args,c,d,kwargs)
实参
def func(name):
print(name)
func('night')# 这里的night 就是实参(实际参数)
按照位置传递参数
def func(name,age,sex):
print(name,age,sex)
func('night','GG',18)
-----
night GG 18
这就是按照位置一一对应进行传值,将night赋值给name 将GG赋值给age 将18赋值给sex
按照关键字传递参数
def func(name,age=18,sex='GG'):
print(name,age,sex)
func('night')
func(age=18,name='night', sex='GG')
---------
根据关键字一一对应进行传值