目录
函数
函数是可以重复使用的用于实现某种功能的代码块。在Python中,分内置函数、第三方模块函数和自定义函数。内置函数是Python自带的函数,模块函数是NumPy等库中的函数。
自定义函数
语法
def 函数名(行参列表):
函数体
def factorial(n):
'''阶乘函数'''
r = 1
while n > 1:
r *= n
n -= 1
return r
print('%d!=%d' % (5, factorial(5)))# 输出:5!=120
def fib(n):
'''输出最大项比n小的斐波那契数列函数'''
a, b = 1, 1
while a < n:
print(a, end=' ')
a, b = b, a + b
fib(260)# 输出:1 1 2 3 5 8 13 21 34 55 89 144 233
说明
- 函数形参不需要声明其类型
- 函数体一定要注意缩进
- 函数体内容不可以为空,但是可以用pass来表示空语句
- 函数的第一行语句通常使用三个单引号'''...'''来注释说明函数
- 函数定义一定要放在调用前
匿名函数
指没有采用def语句定义的没有名称的函数,在使用时临时声明、立刻执行,特点是代码简洁、效率高。
Python使用lambda来创建匿名函数
语法
匿名函数名 = lambda [arg1 [,arg2, ......, argN]] :expression
# 求三个数的乘积
# f1()和f2()在逻辑上相同
def f1(x, y, z):
return x * y * z
f2 = lambda x, y, z: x * y * z
print(f1(3, 4, 5)) # 输出:60
print(f2(3, 4, 5)) # 输出:60
# 对x进行幂运算,并保存在列表中
def L1(x):
return [x ** 2, x ** 3, x ** 4]
L2 = lambda x: [x ** 2, x ** 3, x ** 4]
print(L1(2)) # 输出:[4, 8, 16]
print(L2(2)) # 输出:[4, 8, 16]
模块
为了更好的维护程序,一般会把代码进行分类,分别放在不同文件中,这些独立的文件就是模块。
标准库中有与时间相关的time、datetime模块,随机数的random模块,与操作系统交互的os模块,对Python解释器相关操作的sys模块,数学计算的math模块等。
标准库和扩展库中对象的导入与使用
- import 模块名[as 别名]
使用时需要以“模块名.对象名”的形式进行访问
import math # 导入标准库math
import random # 导入标准库math
import numpy.random as nr # 导入numpy库中的random模块
a = math.gcd(12, 21) # 计算最大公约数
b = random.randint(0, 2) # 获得[0,2]区间上的随机整数
c = nr.randint(0, 2, (4, 3)) # 获得[0,2)区间上的4×3随机整数矩阵
print(a)
print(b)
print(c)
'''
输出:
3
2
[[1 1 1]
[1 1 0]
[0 0 1]
[1 1 1]]
'''
- from 模块名 import 对象名 [as 别名]
这种导入方式可以减少查询次数,提高访问速度
from random import sample
from numpy.random import randint
a = sample(range(10), 5)
'''
在[0,9]区间上选择不重复的5个整数,
range(10):0到9的等差数列,
sample:在序列range(10)中随机抽取5个
'''
b = randint(0, 10, 5) # 在[0,9]区间上生成5个随机整数
print(list(range(10))) # 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a) # 输出:[5, 3, 2, 0, 1]
- from 模块名 import *
一次性导入模块中的所有对象,简单粗暴,不建议这么使用
自定义函数的导入
每个包含Python函数的文件都可以作为一个模块使用
# 该文件名为ex
def factorial(n):
'''阶乘函数'''
r = 1
while n > 1:
r *= n
n -= 1
return r
from ex import factorial
print(factorial(5)) # 输出:5!=120
常用内置函数
排序 sorted()
import numpy.random as nr
x1 = list(range(1, 8)) # 生成区间[1,8)上的列表
nr.shuffle(x1) # shuffle()用来随机打乱顺序,常用于随机生成密码的场景里,实现各种随机化要求。
x2 = sorted(x1) # 按照从小到大排序
x3 = sorted(x1, reverse=True) # 按照从大到小排序
x4 = sorted(x1, key=lambda item: len(str(item))) # 以指定的规则排序
print(x1)# 输出:[4, 2, 5, 6, 3, 1, 7]
print(x2)# 输出:[1, 2, 3, 4, 5, 6, 7]
print(x3)# 输出:[7, 6, 5, 4, 3, 2, 1]
print(x4)# 输出:[4, 2, 5, 6, 3, 1, 7]
枚举 enumerate()
x1 = "abcded"
x2 = list(enumerate(x1))
# 输出:[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'd')]
print(x2)
for ind, ch in enumerate(x1): print(ch) # 输出第二个元素
'''
输出:
a
b
c
d
e
d
'''
映射 map()
过滤 filter()
a = filter(lambda x: x > 10, [1, 11, 2, 45, 7, 6, 13])
b = filter(lambda x: x.isalnum(), ['abc', 'xy12', '***'])
# isalnum()是测试是否为字母或数字的方法
print(list(a)) # 输出:[11, 45, 13]
print(list(b)) # 输出:['abc', 'xy12']
def filter_duplicate(L):
'''过滤重复值'''
return [item for item in L if L.count(item) == 1]
a=filter_duplicate([1, 2, 2, 3, 4, 4, 5])
print(a)# 输出:[1, 3, 5]
压缩 zip()
s1 = [str(x) + str(y) for x, y in zip(['v'] * 4, range(1, 5))]
s2 = list(zip('abcd', range(4)))
print(s1) # 输出:['v1', 'v2', 'v3', 'v4']
print(s2) # 输出:[('a', 0), ('b', 1), ('c', 2), ('d', 3)]
标签:输出,函数,Python,模块,print,import,x1
From: https://blog.csdn.net/weixin_73042028/article/details/137073897