python基础-6-函数
2021/7/16 20:05:25
本文主要是介绍python基础-6-函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Python中函数分两类:内置函数和自定义函数;内置函数放到后面来说,这次主要是自定义函数
语法:
使用 def 关键字
def 函数名(参数列表): 函数体
注:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号 : 起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None
- 函数定义并不会执行函数体;只有当函数被调用时才会执行此操作
实例:
首先定义一个加法函数
def add(x,y): #定义一个加法函数 return x+y #缩进4个空格 add(3,4) #调用函数计算3+4的和 >>> 7
当一个或多个 形参 具有 形参 = 表达式 这样的形式时,该函数就被称为具有“默认形参值”。
在形参有默认值的情况下,调用函数的时候就该形参酒可以被忽略,默认形参值会在执行函数定义时从左到右的顺序被赋值。
def add(x,y=2): #定义一个加法函数,y形参的默认值为2 return x+y #缩进4个空格 add(3) #调用函数计算3+2的和 >>> 5
注:
-
给形参赋默认值的时候必须将该形参放到没有默认值的形参后方(右侧)
-
def add(x,y=2): # 有效 def add(x=2,y): # 无效
参数
上面已经提到了形参,可能有些小伙伴不知道形参时什么,下面就介绍一下函数当中的几种参数类型
- 位置参数
- 默认值参数
- 关键字参数
- 不定长参数
位置参数
位置参数,也可以叫必传参数、形参。
从名字也能看出来,调用函数的时候这个是必须要传的,不然就会报一场了
def positional(param): print(param) positional() >>> Traceback (most recent call last): >>> File "test.py", line 13, in <module> >>> positional()() >>> TypeError: positional()() missing 1 required positional argument: 'param'
def positional(param): print(param) positional("位置参数") >>> "位置参数"
默认值参数
默认值参数,相当于形参的变相(函数定义的时候给形参赋上默认值)
最有用的形式是对一个或多个参数指定一个默认值。这样创建的函数,可以用比定义时允许的更少的参数调用,比如:
def add(x, y=3, z=4) return x+y+z # 这个函数可以通过几种方式调用: add(2) >>> 9 add(2, 2) >>> 8 add(2, 8, 10) >>> 20
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'): print("-- This parrot wouldn't", action, end=' ') print("if you put", voltage, "volts through it.") print("-- Lovely plumage, the", type) print("-- It's", state, "!") parrot(voltage=1000000, action='VOOOOOM') >>> -- This parrot wouldn't VOOOOOM >>> if you put 1000000 volts through it. >>> -- It's a stiff ! parrot(action='VOOOOOM', voltage=1000000) >>> -- This parrot wouldn't VOOOOOM >>> if you put 1000000 volts through it. >>> -- It's a stiff ! parrot('a thousand', state='pushing up the daisies') >>> -- This parrot wouldn't voom >>> if you put a thousand volts through it. >>> -- It's pushing up the daisies ! # 无效调用 parrot() # 缺少必需的参数 parrot(voltage=5.0, 'dead') # 关键字参数后的非关键字参数 parrot(110, voltage=220) # 相同参数的重复值 parrot(actor='John Cleese') # 未知关键字参数
注:
- 在函数调用中,关键字参数必须跟随在位置参数的后面
- 传递的所有关键字参数必须与函数接受的其中一个参数匹配(比如 actor 不是函数 parrot 的有效参数)
- 它们的顺序并不重要。这也包括非可选参数,(比如 parrot(voltage=1000) 也是有效的)
- 不能对同一个参数多次赋值
不定长参数
不定长参数也叫可变参数
可以使用任意数量的参数调用函数,这些参数会被包含在一个元组里。
通常使用*args
表示,一般来说,这些 可变参数 将在形式参数列表的末尾,因为它们收集传递给函数的所有剩余输入参数。出现在 *args 参数之后的任何形式参数都是 ‘仅限关键字参数-**kwargs’。
def concat(*args, sep="/"): return sep.join(args) concat("earth", "mars", "venus") >>> 'earth/mars/venus' concat("earth", "mars", "venus", sep=".") >>> 'earth.mars.venus'
Lambda 表达式
可以用 lambda 关键字来创建一个小的匿名函数
Lambda函数可以在需要函数对象的任何地方使用。它们在语法上限于单个表达式
lambda函数可以引用所包含域的变量
def make_incrementor(n): return lambda x: x + n f = make_incrementor(42) f(1) >>> 43 f(0) >>> 42
将lambda小函数作为参数传递
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')] pairs.sort(key=lambda pair: pair[1]) print(pairs) >>> [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
文档字符串
第一行应该是对象目的的简要概述。为简洁起见,它不应显式声明对象的名称或类型,因为这些可通过其他方式获得(除非名称恰好是描述函数操作的动词)。这一行应以大写字母开头,以句点结尾。
如果文档字符串中有更多行,则第二行应为空白,从而在视觉上将摘要与其余描述分开。后面几行应该是一个或多个段落,描述对象的调用约定,它的副作用等。
Python 解析器不会从 Python 中删除多行字符串文字的缩进,因此处理文档的工具必须在需要时删除缩进。 这是使用以下约定完成的。 文档字符串第一行 之后 的第一个非空行确定整个文档字符串的缩进量。(我们不能使用第一行,因为它通常与字符串的开头引号相邻,因此它的缩进在字符串文字中不明显。)然后从字符串的所有行的开头剥离与该缩进 "等效" 的空格。 缩进更少的行不应该出现,但是如果它们出现,则应该剥离它们的所有前导空格。 应在转化制表符为空格后测试空格的等效性(通常转化为8个空格)
def my_function(): """Do nothing, but document it. No, really, it doesn't do anything. """ pass print(my_function.__doc__) Do nothing, but document it. No, really, it doesn't do anything.
这篇关于python基础-6-函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南
- 2024-10-30Python编程入门指南
- 2024-10-30Python量化交易学习:新手入门指南
- 2024-10-30Python股票自动化交易实战入门教程
- 2024-10-29Python股票自动化交易教程:新手入门指南