###############    函数的定义调用,返回值和返回值接收    ##############

def mylen():
s = "myname"
i = 0
for item in s:
i += 1
return i def func():
return {"name":"andy"},[1,2,3] l = mylen()
print(func()) # 从这个例子可以学到几个:函数的定义,函数的调用,函数的返回值, # 关于返回值有几种情况:
# 1是没有返回值,如果不写return,或者只写return,都是没有返回值的,只要执行了return就不会往后执行了,比如列表的append,没有返回值,
# 2是有一个返回值,可以返回一个列表,可以返回一个字典,return [1,2,3,4] return {name : andy}
# 3是有多个返回值,return 1,2 多个参数使用逗号分隔,
# 接收的时候可以使用一个变量接收,这个时候是一个元组的类型,
# 也可以使用使用两个参数接收,但是不能使用三个变量接收,会报错

###############    函数参数,形参实参,无参数,默认参数,不定长参数,调用使用位置参数,关键字参数,    ##############

########################
# 这种没有参数
def hollo1():
print('hello world')
hollo1() ###################
# 这是必需参数
def hollo2(name):
print('hello world')
print(name,'在唱歌...')
hollo2('andy') #######################
def hollo3(age,name):
print('hello world')
print('我今年%d岁了'%age)
print(name,'在唱歌...')
hollo3(name='andy',age=18)
# 这种函数调用的时候就使用了关键字参数,这样就可以不用管参数的顺序了,默认是位置参数,
# 位置参数和关键字参数,可以混用,但是要注意位置,
##########################
# 有了默认参数之后,调用函数的时候,这个参数可以不写,则使用默认值,
def hollo3(age,name='andy'): # 定义参数的时候,必须先定义位置参数,最后定义默认参数,默认参数也叫做关键字参数,
print('hello world')
print('我今年%d岁了'%age)
print(name,'在唱歌...')
hollo3(age=18) #############################
# 不定长参数,或者叫做动态参数
# 1,加了星号 * 的参数会以元组(tuple)的形式导入,加了两个星号 ** 的参数会以字典的形式导入。然后就可以像处理元组和字典一样处理参数了,
# 2,为什么会有这两种,就是一种位置参数,一种关键字参数,**kwargs就是用来接收关键字参数的,*args就是接收位置参数的,
# 3,先后顺序:必须先定义args,然后定义kwargs,如果有关键字参数一定放在kwargs之前,
# 4,参数名加星就可以了,后面的args,不是必须是这个,但是星一定要有,一般使用args,这是一种编码习惯,
def hollo3(name,*args,**kwargs):
print('hello world')
print(name,'在唱歌...')
print(args) # (60,70) # 这是返回一个元组
print(kwargs) # {'a': 1, 'b': 2} 这是一个字典, hollo3('andy',60,70,a=1,b=2)
# 如果是把一个列表一个一个的传进入
list1=[1,2,3,4]
hollo3(*list1)
# 如果是把一个字典一个一个的传进入
dict1={"name":"andy","age":1}
hollo3(**dict1)

###############    结束线    ##############

###############    结束线    ##############

最新文章

  1. Nginx 配置简述
  2. 牛顿插值法——用Python进行数值计算
  3. cell单选
  4. 四、jquery中的事件与应用
  5. 揭秘JavaScript中谜一样的this
  6. Qt5 程序启动画面图片效果
  7. buffer pool
  8. python+Eclipse+pydev环境搭建(转)
  9. Xcode找Library位置
  10. 详解linux系统的启动过程及系统初始化
  11. TCP/IP协议栈与数据包封装+TCP与UDP区别
  12. Bash判断是否是root
  13. PHP验证码的制作
  14. 反射(学习整理)----Class类和加载器ClassLoader类的整理
  15. Windows Azure 社区新闻综述(#74 版)
  16. Swift供选链接
  17. spring boot系列01--快速构建spring boot项目
  18. rpm安装查看卸载软件
  19. [Swift]LeetCode989. 数组形式的整数加法 | Add to Array-Form of Integer
  20. 学习编写Dockerfile

热门文章

  1. centos7-vsftp(虚拟用户)
  2. bash字符串处理
  3. Android前后台切换的监听
  4. scala快排
  5. 用Emoji和照片挑战大众点评,YOBO玩转新点评方式能引领潮流吗?
  6. Django框架(八):视图(一) URLconf、视图
  7. 吴裕雄--天生自然Linux操作系统:Linux 简介
  8. C#判断两个字符串是否相等的方法 ,还有char赋空值办法。
  9. UML-逻辑架构&包图-相关概念
  10. JDK8新特性之stream