栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python | 函数与模块

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python | 函数与模块

函数的定义及作用

函数是组织好,可重复使用的,用来实现相关功能的代码段
函数提高了代码的重复利用率和应用的模块性。
除Python自带的函数之外,也可以自己创建函数,叫做自定义函数

自定义函数

语法:

def 函数名(参数):
	函数体

函数代码块以def开头
参数为输入值,放于函数名后口号里面,
函数内容以冒号:开始,函数体缩进,return返回输出值

def add(x,y):
    z=x+y
    return z
print(add(1,2))
参数 必须参数

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

>>> def add(x,y):
...     z=x+y
...     return z
...
>>> print(add(1))
Traceback (most recent call last):
  File "", line 1, in 
TypeError: add() missing 1 required positional argument: 'y'
关键字参数

函数调用使用关键字参数来确定传入的参数值,此时,如果多个函数则不需要按照指定顺序。

>>> def person(name,age,sex,interest):
...     print(name+'是一个高中生,今年'+str(age)+'岁了,性别'+sex+',喜欢'+interest)
...
# 或者使用return,是一样的效果
>>> def person(name,sex,interest,age = 16):
    	return name+'是一个高中生,今年'+str(age)+'岁了,性别'+sex+',喜欢'+interest
# 按照参数顺序,可以不指明参数名
>>> person('小明',18,'男','读书')
小明是一个高中生,今年18岁了,性别男,喜欢读书
# 如果不按照顺序,输出的内容则有可能出错
>>> person('男',18,'读书','小明')
男是一个高中生,今年18岁了,性别读书,喜欢小明
# 指定参数名,则不需要按照对应顺序
>>> person(sex='男',age=18,interest='读书',name='小明')
小明是一个高中生,今年18岁了,性别男,喜欢读书
默认参数

在定义函数时,指定参数默认值。调用时如果不传入参数,则使用默认值

>>> def person(name,age=16,sex,interest):
...     print(name+'是一个高中生,今年'+str(age)+'岁了,性别'+sex+',喜欢'+interest)
...
  File "", line 1
SyntaxError: non-default argument follows default argument
# 以上错误,调整默认参数位置至所有参数最后就可以解决
>>> def person(name,sex,interest,age = 16):
...     print(name+'是一个高中生,今年'+str(age)+'岁了,性别'+sex+',喜欢'+interest)
...
>>> person(sex='男',age=18,interest='读书',name='小明')
小明是一个高中生,今年18岁了,性别男,喜欢读书
>>> person(sex='男',interest='读书',name='小明')
小明是一个高中生,今年16岁了,性别男,喜欢读书
不定长参数

一个星号*:用于存放声明时未命名的参数,这些参数叫做不定长参数。函数调用时没有参数传入的个数限制,这些函数声明时是未命名的参数会以元组形式导入

>>> def person(name,*canshu):
...     print(name)
...     print(canshu)
...
>>> person('小明','男','读书')
小明
('男', '读书')

不定长部分如果没有指定参数,传入是一个空元组

>>> person('小明')
小明
()

加了两个星号**的参数会以字典的形式导入

>>> def person(name,**canshu):
...     print(name)
...     print(canshu)
...
# 调用时必须指明参数名称
>>> person('小明','男','读书')
Traceback (most recent call last):
  File "", line 1, in 
TypeError: person() takes 1 positional argument but 3 were given
>>> person('小明',sex='男',interest='读书')
小明
{'sex': '男', 'interest': '读书'}

声明函数时,星号*可以单独出现,* 后的参数必须用关键字传入

>>> def f(a,b,*,c):
...     return a+b+c
...
>>> f(1,2,3)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: f() takes 2 positional arguments but 3 were given
>>> f(1,2,c=3)
6
强制位置参数

/ 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。
3.8版本之后的才能使用

匿名函数lambda

不使用def定义函数,没有函数名
lamdba主体时一个表达式,而不是代码块,函数体比def简单很多

语法:

lambda [arg1 [,arg2,.....argn]]:expression

示例:

>>> lambda1=lambda name,age,sex,interest:name+'是一个高中生,今年'+str(age)+'岁了,性别'+sex+',喜欢'+interest
>>> lambda1('小明',18,'男','读书')
'小明是一个高中生,今年18岁了,性别男,喜欢读书'
>>> lambda1(name='小明',sex='男',interest='读书',age=18)
'小明是一个高中生,今年18岁了,性别男,喜欢读书'
变量作用域

定义在函数内部的为局部变量,仅能在函数内部使用
定义在函数外部的为全局变量,可在全局使用

>>> a=5
>>> def test(b,c):
...     return a,b,c
...
>>> test(6,7)
(5, 6, 7)
>>> b
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'b' is not defined
>>> a
5
模块

模块是将包含所有定义的函数和变量的文件,一般将同类功能的函数组和在一起称为模块。
模块需要导入后,在调用相应函数进行使用
模块导入的方法:

import导入全部
import module1[, module2[,... moduleN]
# 导入模块
>>> import sys
# 调用函数
>>> sys.path
['', 'D:\Anaconda3\python37.zip', 'D:\Anaconda3\DLLs', 'D:\Anaconda3\lib', 'D:\Anaconda3', 'D:\Anaconda3\lib\site-packages', 'D:\Anaconda3\lib\site-packages\win32', 'D:\Anaconda3\lib\site-packages\win32\lib', 'D:\Anaconda3\lib\site-packages\Pythonwin']
# as 进行重命名
>>>import pandas as pd
from … import

从模块中导入一个指定的部分

from modname import name1[, name2[, ... nameN]]
from … import *

把一个模块的所有内容全都导入

from modname import *
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/674889.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号