# 函数定义语法
## def 函数()
~~~
def xiao(str1):
a = 0
for i in str1:
a += 1
print(a)
xiao("s")
~~~
# 没有返回值的函数 void类型的函数 直接返回 None
~~~
def xiao():
a = 10
for i in range(10):
a -= 1
print(a)
return None
xiao()
~~~
## 函数多返回值:
~~~
def test_return():
return 1,"hello",True
x,y,z=test_return()
print(x)
print(y)
print(z)
~~~
![](https://img.kancloud.cn/e4/8c/e48c6db3c6198d2b4e317cd2ea50a643_1005x502.png)
<br/>
<br/>
## 缺省参数
以下与PHP类似 如果行参定义了值,如果不传默认为形参值,传递了为实参值
~~~
def user_info(name,age,gender="男"):
print(f"姓名:{name},年龄{age},性别{gender}")
user_info("小米",20,"女")
~~~
![](https://img.kancloud.cn/d8/69/d8695de060d9cf80ab33e1fa4248da28_1241x372.png)
## 不定长参数:
1.位置传递
不定长参数也叫可变参数,用于不确定调用的时候,会传递多少个参数(不传参也可也)的场景
作用:当调用函数时不确定参数个数时,可以使用不定长参数
不定长参数的类型:
## 位置传递参数 返回一个元组
~~~
def user_info(*args):
print(args)
user_info("小米",20,"女")
~~~
![](https://img.kancloud.cn/dd/de/ddde4af99e6ec2571de2f0eaac140297_1057x501.png)
<br/>
<br/>
## 2.关键字不定长
## 关键字不定长 返回一个字典
~~~
def user_info(**args):
print(type(args))
user_info(name="小米",age=20,gender="女",addr="北京") #参数必须是带有变量的
~~~
![](https://img.kancloud.cn/8c/e3/8ce332e62eb4cba62d587ac5264aa774_1386x518.png)