python函数-函数初识

1.函数的定义

语法
def 函数名(参数1,参数2,参数3,...):
'''注释'''
函数体
return 返回的值

2.函数的使用原则---先定义后调用

#定义阶段
def foo():
print('from foo')
bar()
def bar():
print('from bar')
#调用阶段
foo()

3.函数的返回值  

 3.1返回值的种类

  (1)没有返回值,返回None

    ·只有return:结束一个函数的继续

    ·没有return

    ·有return None:不常用

 

#只有一个return
def func():
s = '人生苦短我用python'
count = 0
for i in s:
count += 1
return
res = func() # 函数名加括号进行调用:func()
print(res)

  

# 没有return
def func():
s = '人生苦短我用python'
count = 0
for i in s:
count += 1
res = func() # 函数名加括号进行调用:func()
print(res)

  

# 有return None:不常用

def func():
s = '人生苦短我用python'
count = 0
for i in s:
count += 1
return None
res = func() # 函数名加括号进行调用:func()
print(res)

  

  (2)有一个返回值

          ·可以返回任何数据类型

    ·只要返回就可以接收到

    ·如果在一个函数中有多个return,只返回第一个

def func():
s = '人生苦短我用python'
count = 0
for i in s:
count += 1
return count
return #'这是第二个return 不返回' res = func()
print(res) >>>12

(3)返回多个值

  • 用多个变量接收:有多少返回值就要有多少变量接收
  • 用一个变量接收:接收到的是一个元组
def func():
s = '人生苦短我用python'
count = 0
for i in s:
count += 1
return s, count
res = func() # 函数名加括号进行调用:func()
print(res)
>> > ('人生苦短我用python', 12) res1, res2 = func()
print(res1, res2)
>>> 人生苦短我用python 12

4.函数的参数  

1、参数的概念  

1.没有参数:定义函数和调用函数时括号里都不写内容

2.有一个参数:传什么就是什么

3.有多个参数:位置参数

==顺序:位置参数,*args,默认参数,**kwargs==

2.参数的种类

1.形参的角度:

  • 位置参数:必须传,且有几个就必须传几个
  • * args:接收的是按照位置传参的值,组织成一个元组
  • 默认参数:可传可不传,不传就按默认值
  • ** kwargs:接收的是按照关键字传参的值,组织成一个字典
# 位置参数
def name_sex(name, sex):
print('姓名是:' + name + '\n性别是:' + sex)
name_sex('乔','男')
>>>姓名是:乔
>>>性别是:男 # 默认参数
def name_sex(name, sex='男'):
print('姓名是:' + name + '\n性别是:' + sex)
name_sex('乔')
>>>姓名是:乔
>>>性别是:男 # *args---元组
def name_sex(*args):
print(args)
name_sex('乔','男')
>>>('乔', '男') # **kwargs---字典
def name_sex(**kwargs):
print(kwargs)
name_sex(姓名='乔',性别='男')
>>> {'姓名': '乔', '性别': '男'}

2.实参的角度

  

  • 按位置传参:
  • 按关键字传参:
  • 按位置、按关键字混合传参:必须按照位置参数,再按照关键字传参,不能将参数赋予多个值
# 按位置传参
def name_sex(name, sex):
print('姓名是:' + name + '\n性别是:' + sex)
name_sex('乔', '男')
>>>姓名是:乔
>>>性别是:男 # *按关键字传参
def name_sex(name, sex):
print('姓名是:' + name + '\n性别是:' + sex)
name_sex(sex='男',name='乔')
>>>姓名是:乔
>>>性别是:男 # *按位置、按关键字混合传参 必须按照位置参数,再按照关键字传参,不能将参数赋予多个值
def name_sex(name, sex):
print('姓名是:' + name + '\n性别是:' + sex)
name_sex('乔',sex='男')
>>>姓名是:乔
>>>性别是:男

5、动态参数的另一个传参方式

1、站在形参的角度上,给变量加上*,就是组合所有传来的  
def func(*args):
print(args)

 2、站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散

unc(1,2,3,4,5)
l = [1,2,3,4,5]
func(*l)

6、默认参数的陷阱:默认参数是一个可变数据类型

一、
def qqxing(l = []):
l.append(1)
print(l)
qqxing()
qqxing([])
qqxing()
qqxing() 二、
def qqxing(k,l = {}):
l[k] = 'v'
print(l)
qqxing(1)
qqxing(2)
qqxing(3)

  

  

 

最新文章

  1. 使用tomcat manager 管理和部署项目
  2. iPad开发--UIPopoverController简单使用iOS7之前和iOS7之后的使用方法
  3. GEMR: Get the parent window for view
  4. 基于Lumisoft.NET组件的POP3邮件接收和删除操作(转载)
  5. 移动端web出现的一系列问题
  6. 剑指offer系列50--不用加减乘除做加法
  7. [转]Linux中find常见用法示例
  8. E8.Net 工作流二次开发架构平台
  9. C语言读写伯克利DB 4
  10. php部分学习笔记
  11. webservice06#异常#Handler
  12. Android广播的发送与接收
  13. XBMC源代码简析 5:视频播放器(dvdplayer)-解复用器(以ffmpeg为例)
  14. [日志分析] Access Log 日志分析
  15. 记一次oracle数据库复制过程
  16. HTML5 Audio(音频)
  17. main函数如何调用文件外的函数
  18. 设置sde表空间为自动增长
  19. byte ---> hex String
  20. java BIO/NIO

热门文章

  1. P1074 宇宙无敌加法器
  2. C语言整理复习——指针
  3. CodeForces - 876D Sorting the Coins
  4. hue中访问hdfs报错
  5. 3 JVM配置参数
  6. eclipse、idea中自动生成元模型JPA元模型对象
  7. sql语句中 and 与or 的优先级
  8. C++ 语言程序设计(清华大学)1
  9. Netty 异步模型
  10. P1057 数零壹