python学习之第八篇:Python中的函数基础

Posted 难凉热血,码梦为生!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习之第八篇:Python中的函数基础相关的知识,希望对你有一定的参考价值。

1.前言

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。

2.函数的定义

定义函数时需要遵守以下规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

语法:

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

3.函数的调用

函数的调用:函数名加括号

  1. 先找到名字
  2. 根据名字调用代码

4.函数的参数

调用函数时可使用的正式参数类型:

  • 位置参数
  • 关键字参数
  • 默认参数
  • 不定长参数

位置参数

位置参数,也叫必需参数,在调用函数时位置参数必须传值,并且必须以正确的顺序和相同的数量传入传入。

def func(name,age):
    print ('我叫%s,我今年%s岁了' %(name,age))
    
func('张三',18)
#输出
'我叫张三,我今年18岁了'

关键字参数

以“参数名 = 参数值”的形式作为传入函数称为关键字参数,使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

def func(name,age):
    print ('我叫%s,我今年%s岁了' %(name,age))
    
func(age=18,name='张三')
#输出
'我叫张三,我今年18岁了'

默认参数

在定义函数时,如果某些参数的值不会经常变化,可以将其设置为默认参数,调用函数时,如果给默认参数传递了实参,则使用传递来的实参,如果没有传递实参,则会使用默认参数。

# age为默认参数,默认为18
def func(name,age=18):
    print ('我叫%s,我今年%s岁了' %(name,age))

func(age=28,name='张三')    #age传了28,则使用传来的28
func(name='李四')          #age没有传参,则使用默认的18
#输出
'我叫张三,我今年28岁了'
'我叫李四,我今年18岁了'

不定长参数

如果需要传给函数的参数很多,并且在函数声明时不确定在调用时会传入多少个参数,这种情况下,就要使用到不定长参数了
不定长参数使用*args和**kwargs来接收:

  • 加单星号(*)的变量*args用来接收除去键值对以外的所有参数,以元组形式保存;
  • 加双星号(**)的变量**kwargs用来接收命名参数,即形如key=value的参数,以字典形式保存;
def func(a,b,*args,**kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)

func(1,2,3,4,5,6,w=7,j=8)
#输出
1
2
(3, 4, 5, 6)
{'w': 7, 'j': 8}

5.案例

编写一个求和函数,计算用户传入的所有参数之和,不能限制用户传入参数的个数

def sum(*args):
    res = 0
    for i in args:
        res += i
    return res

print(sum(1,2)) 
print(sum(1,2,3,4,5,6,7,8,9))   
#输出
3 
45

以上是关于python学习之第八篇:Python中的函数基础的主要内容,如果未能解决你的问题,请参考以下文章

python基础篇第八篇面向对象(下)

Python之路第八篇:Python基础(24)——面向对象进阶

第八篇:python基础_8 面向对象与网络编程

Python自动化 第八篇:Python基础-Socket编程进阶

python学习之路基础篇(第八篇)

Python 学习之《Learn Python3 The Hard Way 》第八部分学习笔记