Python编程_Lesson013_函数编程总结和补遗

函数的注释

由于Python是一门解释性语言,它的注释并不会被去掉,所以当我们使用help查看这个函数功能的时候,就会显示这个函数的注释部分:
我们自定义一个函数

def foo(x, y):
    '''
    函数功能
    :param x: 参数
    :param y: 参数
    :return: 返回值
    '''
    pass

调用print(help(foo))就会打印出下面的注释:

Help on function foo in module __main__:

foo(x, y)
    函数功能
    :param x: 参数
    :param y: 参数
    :return: 返回值

None

这样就会把我们自定义函数的注释通过help函数打印出来。
当然help也可以查看系统内置函数中的函数注释。

dir()和vars()函数

使用

 print(dir())
 print(vars())

打印结果如下:

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'foo', 'main']
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001562970B0B8>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/Administrator/Desktop/PoEdu/Python/SourceCode/PoEduShopDemo/Test.py', '__cached__': None, 'foo': <function foo at 0x0000015629613E18>, 'main': <function main at 0x00000156297DF730>}
Help on function foo in module __main__:

从结果可以看出,dir()函数返回的是当前程序中所有的变量的键名,而vars()返回的 当前程序所有的变量字典。


模块导入

我们使用普通的import方法进行模块导入的时候,即使我们调用多次import XXX.xxx函数,但是它只能初始化这个XXX文件一次,不会初始化多次,我们看一个例子:

from  PoEdu.public import test
test()

from  PoEdu.public import test
test()

我们from PoEdu.public import test两次,来导入PoEdu包中public.py文件中的test函数,打印结果如下:

init public.py
public test()
public test()

所以我们只能对public.py文件初始化一次。


id()函数

用法如下:

id(1)
1385346112

它表示在int类型的对象1在Python中的ID号为1385346112,Python中每一个对象都有一个ID,但是这里的ID跟C/C++中的地址还是有区别的。
当然,Python为了效率,对一些常用的变量都做了一个固定的id,比如:

id(1)
1385346112
id(2)
1385346144
id("a")
2488569372544
id("a")
2488569372544
str = "a"
str2 = "a"
id(str)
2488569372544

但是对于两个(包括两个)以上的字符变量就不会再是固定的了

id("aa")
2488584917320
id("aa")
2488584918552

对于这一特性,我们稍微了解一下就好。


数值处理

abs()函数

取绝对值

bs(-1)
1
str()函数
str(111)
'111'
str(123.123)
'123.123'
float()函数
float("123.123")
123.123
int()函数
int("123")
123

int(123.123)
123
bool()函数

这是一个有意的函数,只有0才能转换为False,其余情况都转换为True

bool(1)
True
bool(-1)
True
bool(0)
False
max()函数

max函数接收的参数是一个列表,但是需要注意的是,这个列表中的所有元素的类型必须一致,否则会报错。

max([1,2,3,4,-3,20,7])
20
max("a", "bc", "sr")
'sr'
max(1, "2", "3", 9)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: '>' not supported between instances of 'str' and 'int'

从结果可以看出,当类型不一样的时候就会报错。

min()函数

与max()函数一样。

sum()函数

只能加数值,不能加字符串

sum([1,2,3,4,5,6,7,8,9,10])
55
sum([1.2,2.3,3,4,5,6,7,8,9,10])
55.5
sum(["1", "2"])
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
pow()函数

幂运算函数

pow(2,2)
4
pow(2,3)
8
divmod()函数

参数是被除数和除数,返回值是商和余数

divmod(100, 3)
(33, 1)
divmod(200, 3)
(66, 2)
len()函数

可以求任何可迭代对象中的元素个数。

len([1,2,3,0,5,3])
6
len("123445hdfhi")
11
all()函数

会判断这个可迭代对象中所有元素的值是否为True,是的话返回True,否则返回False

all([1,2,3,4,0,3,4,5])
False
all([1,"2","4"])
True
all(["0", 1, 3])
True
any()函数

只要这个可迭代对象中有一个元素为True,则返回True

any([1,2,3,4,5,0])
True
any([1,0,0,0,0,0])
True
any([0,0,0,0,0,0])
zip()函数
x = list(range(1,4))
x
[1, 2, 3]
y = list(range(4,7))
y
[4, 5, 6]
z = list(range(7, 10))
z
[7, 8, 9]
w = zip(x, y, z)
for i in w:
    print(i)

(1, 4, 7)
(2, 5, 8)
(3, 6, 9)
chr()函数

根据编码取字符

chr(123)
'{'
ord()函数

根据字符取编码

ord("{")
123
hex()函数

从十进制到十六进制的转换

hex(100)
'0x64'
oct()函数

从十进制到八进制的转换

oct(100)
'0o144'
bin()函数

从十进制到二进制的转换

> bin(100)
'0b1100100'
str()函数的特殊用法

灵活占位

s = "{0} Say: {1}"
s
'{0} Say: {1}'
fs = s.format("Mark", "Hello")
fs
'Mark Say: Hello'

这个字符串的特性可以用在反射机制(工厂模式)中,来进行模块的导入。


模块的使用

使用 import modulename来导入某一个模块

random模块

随机数的产生模块
random.random()会产生一个0到1之间的double类型的随机数

random.random()
0.3671209897112814

random.randint(1, 10)会生成一个1到10之间的整数,包括1和10

random.randint(1, 10)
1
random.randint(1, 10)
4
random.randint(1, 10)
5
random.randint(1, 10)
2
random.randint(1, 10)
6
random.randint(1, 10)
10

还有一个类似的方法来产生随机数,唯一区别是产生的随机数中不包含最后一个数:

random.randrange(1, 10)
9
random.randrange(1, 10)
1
random.randrange(1, 10)
1
random.randrange(1, 10)
5
random.randrange(1, 10)
7
random.randrange(1, 10)
4

文件操作的相关模块

在Python中常用的关于文件的模块有三个,分别是pickle、json和shelve,它们都可以简单的实现文件的读写操作。
序列化和反序列化
参考地址
把内存中的数据存到硬盘就叫做序列化。
把硬盘中的数据导入到内存中叫做反序列化。
这里我们只简单的说一下pickle和json这两个模块。
json存储在硬盘上面使用的是明文的方式,而pickle使用的则是二进制。它们都有load()、loads()、.dump()、dumps()这四个函数。
json模块中的函数
load()反序列化:读取文件中的json字符串并转换成Python对象
loads()反序列化:将json字符串转换成Python对象
dump()序列化:将Python对象转换成json字符串并存储到文件中
dumps()序列化:将Python对象转换成json字符串

pickle模块中的函数
load()反序列化到内存
loads()反序列化到内存
dump()序列化到硬盘
dumps()序列化硬盘

需要注意的是,json或者pickle存入到文件或者从文件中读取的时候,看一下类型再做相应的数据处理会更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值