Python小概念

注意
本文最后更新于 2022-08-06,文中内容可能已过时。
  • 表示接受任意个数的参数
    • 如果是没有指定key的参数,会以list的形式存放到args中
    • 如果是有指定key的参数,会以dict的形式存放到kwargs中

样例:

1
2
3
4
5
6
7
8
9
def test(*args,**kwargs):
    print("无指定的参数为:")
    for i in args:
        print(i)

    print("无指定的参数为:")
    for key,value in kwargs.items():
        print(key,"=",value)
test('aaa','bbb',id=1,content="abc")

输出:

1
2
3
4
5
6
无指定的参数为:
aaa
bbb
无指定的参数为:
id = 1
content = abc

bytes是字节流,str是字符串,对应的分别是<class 'bytes'><class 'str'>,对比如下: str由若干个字符组成,以字符为单位进行操作;bytes由若干个字节组成,以字节为单位进行操作。 bytes数据适合在网络中传输

样例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
item = b'' # 空串
print(item)

item1 = b'Hello'
item2 = 'Hello'


print(type(item1),"/",type(item2))
for i in item1: # 存储字符对应的ASCII码
    print(i)

for i in item2:
    print(i)

# 相互转换
# bytes->str
str = item1.decode("utf-8")
print(str)
# str->bytes
bytes = item2.encode("utf-8")
print(bytes)

输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
b''
<class 'bytes'> / <class 'str'>
72
101
108
108
111
H
e
l
l
o
Hello
b'Hello'

样例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
print("{} {}".format("Hello", "World"))    # 不设置指定位置,按默认顺序
print("{0} {1}".format("Hello", "World"))  # 设置指定位置
print("{1} {0} {1}".format("Wello", "World"))  # 设置指定位置
print("id: {id} age: {age}".format(age=20,id=1)) # 变量对应


list = ["Hello","World"]
# 通过列表索引设置参数
print("word1: {0[0]}, word2: {0[1]}".format(list))  # "0" 是必须的

# 通过字典设置参数
dict = {"id": 1,"age": 20, "sex": "female"}
print(f'id: {dict["id"]} age: {dict["age"]}') # format简单用法
print("id: {id}, age: {age}, sex: {sex}".format(**dict))

# 数字格式化

# 保留小数点后两位
print("{:.2f}".format(3.12344554))

输出:

1
2
3
4
5
6
7
8
Hello World
Hello World
World Wello World
id: 1 age: 20
word1: Hello, word2: World
id: 1 age: 20
id: 1, age: 20, sex: female
3.12

样例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import json
from pprint import pprint

data = { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } 
# python数据结构编码为JSON数据格式
print(data)
print(type(data))
json_str = json.dumps(data)
print(json_str)
print(type(json_str))

# JSON数据格式解码为python数据结构
json_data = json.loads(json_str)
pprint(json_data) # 可以考虑使用pprint模块的 pprint()函数来代替普通的 print()函数(更美观)
print(type(json_data))

# 如果要处理的是文件而不是字符串

# 将数据写入json文件
with open('./data.json', 'w') as f:
    json.dump(json_data, f)

# 读取json文件
with open('./data.json', 'r') as f:
    data_1 = json.load(f)
    print(data_1)

输出:

1
2
3
4
5
6
7
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
<class 'dict'>
{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}
<class 'str'>
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
<class 'dict'>
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

classmethod修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以来调用类的属性,类的方法,实例化对象等。

样例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class Test(object):
    num = 10000
    def func1(self):  
        print ('this is func1') 
    @classmethod
    def func2(cls):
        print ('this is func2')
        print (cls.num)
        cls().func1() #调用func1方法
 
Test.func2() #不需要实例化

输出:

1
2
3
this is func2
10000
this is func1