python中的函数

一.函数的基本概念

1. 函数的定义

定义函数使用关键字def,后接函数名,再后接放在()中的可选参数列表,最后是冒号。格式如下

def hello(name,fistname):         # 定义一个函数hello,strname是传给函数的参数
    print(name,firstname)          # 打印参数

调用时,直接使用函数名称即可。例:

hello("I love you")     # 调用函数,结果输出:I love you!

2.函数的命名规则

函数名的命名有其对应的规则

  • 必须以字母或下划线开头
  • 可以包含任意字母、数字或下划线的组合
  • 不能使用任何特殊字符或标点符号
  • 区分大小写
  • 不能是保留字
  • 不能以数字开头

3.函数的组成部分

函数有四个组成部分:

  • 函数名:def后面的名字
  • 函数参数:函数名后面的变量
  • 函数体:函数名的下一行代码,起始需要缩进
  • 返回值:函数执行完的返回内容,用 return 语句返回。若无返回值,可不写 return,但即使不写 return 默认也会返回一个None
  • 对于一般类型的函数来说,函数名和函数体是必须有的,函数的参数和返回值是可选的

文档字符串
在函数体中,常会在开始位置放一个多行字符串,用来说明函数的功能及调用方法。这个字符串为函数的文档字符串(docstring),说白了就是帮助文档。可使用代码print(函数名.doc)将其输出

def get_info():                         # 定义一个函数 get_info
    '''本函数用于返回用户姓名和年龄'''
    name = 'tom'
    age = 23
    return name, age                     # 返回 name 和 age 的值
    
print(get_info.__doc__)                 # 用 __doc__ 返回文档字符串
help(get_info)                          # 用内置函数 help 来查看文档帮助信息

在实际应用中,文档字符串主要用于描述函数的相关信息,以便用户更好的浏览和输出。建议养成在代码中添加文档字符串的好习惯

此处文档字符串虽然我们用的是三引号,但其实单引号和双引号都可以实现相同的功能,只是因为在实际应用中我们要描述的内容比较多,会占据多行,所以用的三引号引用多行文本,若内容很短,只有一行的情况下用单引号、双引号与用三引号无甚区别

但要注意的是文档字符串必须在函数体的第一行

4.函数的参数:形参与实参

形参是从函数的角度来说的,在定义函数时写到括号中的参数就是形参。所谓形参就是形式上的参数

实参是从调用的角度来说的,在调用函数时写到括号里传给函数的参数就是实参,实参可以是常量、变量、表达式、函数。
实参的个数与类型应与形参一一对应,不能多也不能少

  • 形参与实参的区别:
    1.形参是虚拟的,不占用内存空间。形参变量只有在被调用时才分配内存单元
    2.实参是一个变量,会占用内存空间,数据传送单向,由实参传给形参,不能由形参传给实参
import time
times = time.strftime('%Y--%m--%d')
def f(time):
    print('Now is : %s' % time)
f(times)

5.函数的返回值

函数不需要返回值时可以什么都不做。若需要返回值时,就要使用 return 语句将具体的值返回。使用 return 语句可以一次返回多个值。调用时,可定义多个变量来接收,也可用一个元组来接收

def get_info():
    name = 'tom'
    age = 23
    return name,age
    
myname,myage = get_info()
print(myname,myage)         # tom 23

person = get_info()
print(person)               # ('tom', 23)
  • 返回值的作用:
    结束函数。函数在执行过程中只要遇到 return 语句,就会停止执行并返回结果,所以可以理解为 return 语句代表着函数的结束
    返回对象

  • 注意:
    若函数里没有明确指定return,则函数会默认返回一个None
    若return多个对象,则python将会帮我们把这些对象封装成一个元组返回给我们

二.函数的参数

函数的参数有几种:

  • 必备参数
  • 关键字参数
  • 默认参数
  • 不定长参数

1. 必备参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样

def get_info(name, age):
    print("My name is %s, I'm %d years old." %(name, age))
 
get_info('tom',25)
get_info('jerry',16)

2.关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值

3.默认参数

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的sex,如果sex没有被传入

def get_info(name, age, sex='male'):
    print('Name: %s' %name)
    print('age: %d' %age)
    print('Sex: %s' %sex)
 
get_info('tom',23)
get_info('jerry',30,'female')

4.不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名

5.参数的位置优先级

参数的位置优先级:

  • 关键字参数
  • 默认参数
  • args不定长参数
  • kwargs不定长参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值