当前位置:   article > 正文

python study note_python 应为类型 'list[tuple[int, int, str]] | none',但实

python 应为类型 'list[tuple[int, int, str]] | none',但实际为 'str

参考教程

目录

注释和引号使用、编码

数据类型和变量

lambda、zip、map、reduce、enumerate函数

_xx、__xxx、__xxx__的区别

类、函数定义、异常处理

IO编程

os和sys模块

常用的内建模块

注释和引号使用、编码、*和**的区别

# encoding=utf-8 或者 # -*- utf-8 -*-

单行注释:#

多行注释:''' '''或者""" """

字符串:单引号:'' 双引号:" " 三引号:''' ''' 或""" """,三引号支持换行

转义:r'',r不转义字符串

type hints之Optional、Union

*和**:*将传进来的作为一个元组,**将传进来的参数作为一个字典

  1. from typing import Union,Optional
  2. # Union[xx,]表示多种选择
  3. # Optional[xx]相当于Union[xx,None]
  4. # Optional[xx]与默认参数是不同的
  5. def test_func(x : Union[str,list]) -> Union[str,list]:
  6. print(x)
  7. return x
  8. test_func("aaa")
  9. def test_func_2(x:Optional[str]):
  10. if x is None:
  11. print("None")
  12. else:
  13. print(x)
  14. test_func_2(None)
  15. def test_func_3(x:Optional[str]=None):
  16. print("Hello world!")
  17. test_func_3()
  18. def test_func_4(*argv):
  19. print(argv)
  20. test_func_4(1,2,3,4,5)
  21. def test_func_5(*argv,**kargv):
  22. print(argv)
  23. print(kargv)
  24. test_func_5(1,2,3,4,a=1,b=2,c=3)

数据类型和变量

整数(int)、浮点数(float)、复数(complex)、字符串(str)、布尔值和空值

  1. test_int = 1
  2. test_float = 1.0
  3. test_str = "abc"
  4. test_complex = complex(1,2)
  5. test_bool_1 = True
  6. test_bool_2 = False
  7. test_none = None
  8. #str还有各种函数
  9. str.split()
  10. str.join()
  11. ....

元组(tuple)、列表(list)、字典(dict)、集合(set)

  1. #元组不可变
  2. test_tupble = (1,2,3)
  3. test_list = [1,2,3]
  4. test_dict = {"a":1,"b":2}
  5. #空集合必须使用 test_set = set(),test_set = {}会解析成空字典
  6. test_set = {"a","b","c"}
  7. #集合之前的并集、交集、差集运算,需要转换成set类型
  8. #并集、交集、差集
  9. test_1.union(test_list)
  10. test_1.intersection(test_list)
  11. test_1.difference(test_list)

相关函数说明

  1. '''
  2. 数组排序:sorted
  3. (很多自带sort函数,sort函数是在原数组上排序)
  4. 长度可以使用:len()
  5. 字符串格式化:"{},{}".format("a","b")
  6. 插入元素:有顺序的(list):append,insert
  7. 无顺序概念的(set):add
  8. 类自带的函数(__xxx__格式,一般都是函数,所以调用的时候一般是__xxx__()):__len__()
  9. 删掉元素:pop,remove()
  10. 还有: del xx[]
  11. '''
  12. test_tuple = (1,2,3)
  13. print(len(test_tuple))
  14. print(test_tuple.__len__())

lambda、zip、map、reduce、enumerate函数

  1. from functools import reduce
  2. test_list_1 = ['a','b','c']
  3. test_list_2 = [1,2,3]
  4. # zip
  5. for index,value in zip(test_list_2,test_list_1):
  6. print(index,value)
  7. # enumerate
  8. for index,value in enumerate(test_list_1):
  9. print(index,value)
  10. #reduce
  11. test_reduce = reduce(lambda x,y:x+y,test_list_2)
  12. print(test_reduce)
  13. #lambda map
  14. test_map = map(lambda x:x*2,test_list_2)

_xx、__xxx、__xxx__的区别

  1. class TestClass():
  2. '''
  3. _xx:Python中不存在真正的私有方法。为了实现类似于c++中私有方法,可以在类的方法或属性前加一个“_”单下划线,意味着该方法或属性不应该去调用,它并不属于API。
  4. __xx:它并不是用来标识一个方法或属性是私有的,真正作用是用来避免子类覆盖其内容。编译时会变成 _A__method()
  5. __XX__:用于python调用,不要使用
  6. '''
  7. def __init__(self):
  8. self._test_a = 1
  9. def __method(self):
  10. print("This method from A!")
  11. def method(self):
  12. self.__method()

类、函数定义、异常处理

  1. class TestClass():
  2. def __init__(self):
  3. self.test_x = 1
  4. def test_exception(self):
  5. try:
  6. print("aaa")
  7. raise ValueError("value error")
  8. except ValueError as e:
  9. print(e)
  10. finally:
  11. print("try except finally example!")
  12. test_class = TestClass()
  13. test_class.test_exception()

IO编程

文件读写

  1. file_name = "test.txt"
  2. try:
  3. f = open(file_name,"w+",encoding="utf-8")
  4. for line in f.readlines():
  5. print(line)
  6. test_write = "测试写入数据"
  7. f.write(test_write)
  8. f.close()
  9. except Exception as e:
  10. print("exception:",e)
  11. finally:
  12. if f:
  13. f.close()
  14. try:
  15. with open(file_name,"w+",encoding='utf-8') as f:
  16. for line in f.readlines():
  17. print(line)
  18. except Exception as e:
  19. print("exception:",e)

序列化:joblib和pickle、json

  1. #joblib sklearn自带的,更加高效,joblib没有序列成字符串的功能
  2. #pickle序列化二进制文件,一般序列化只能在python中使用
  3. #json 则是序列化成字符串,外界可以直接使用
  4. import joblib
  5. import pickle
  6. file_path = "xxxxx"
  7. joblib.load(file_path)
  8. joblib.dump(file_path)
  9. #pickle
  10. f = open("file_path",'rb')
  11. d = pickle.load(f)
  12. f.close()
  13. #存储到文件中
  14. f = open("file_path","wb")
  15. pickle.dump(d,f)
  16. f.close()
  17. #dumps序列化成字符串
  18. d= dict(name="bob",age=20)
  19. d_b = pickle.dumps(d)
  20. #
  21. d = pickle.loads(d_b)

os和sys模块

  1. import os
  2. import sys
  3. # os指跟操作系统相关的,实际存在的,比如文件路径、目录
  4. # sys指系统相关的,比如python的运行路径,库的路径
  5. os.path.abspath(".")
  6. sys.path.append("..")
  7. sys.path
  8. #函数调用参数
  9. sys.argv

常用的内建模块

  1. # 日志模块
  2. import logging
  3. logging.basicConfig(format='%(asctime)s %(filename)s %(levelname)s %(message)s',level=logging.INFO)
  4. logger = logging.getLogger(__name__)
  5. logger.info("测试日志")
  1. # requests 模块 参考url:https://www.liaoxuefeng.com/wiki/1016959663602400/1183249464292448
  2. #
  3. import requests
  4. url = "http://baidu.com"
  5. response = requests.get(url)
  6. #返回体 response,返回体一般都是属性,返回函数的情况较少
  7. print(response.url)
  8. print(response.status_code)
  9. print(response.headers)
  10. print(response.content)
  1. # 跟数值计算相关、数组相关的基本可以使用这个库
  2. #参考url:https://blog.caiyongji.com/2020/12/06/pre-ml-numpy-3.html
  3. import numpy as np
  4. test_list = [1,2,3,4]
  5. test_array = np.array(test_list)
  6. test_array.sort()
  7. array_reshape = test_array.reshape((2,2))
  1. # pandas DataFrame使用:https://blog.csdn.net/weixin_38168620/article/details/79580312
  2. # df []行通过切片访问,列通过 列名(单个或列表),比如df[0:3] df[['id','name']],df[0:3]['name']
  3. # df.loc [][] 必须出现行列,第一个[]为行 第二个[]为列,可以切片,可以列表
  4. import pandas as pd
  5. test_list = {"name":["a","b","c"],"id":["1","2","3"],"age":[3,4,5]}
  6. df = pd.DataFrame(test_list)
  7. #dataframe访问
  8. #下标访问
  9. #访问行
  10. df[0:2]
  11. #访问列
  12. df['name']
  13. df[['name','id']]
  14. #行列一起访问,
  15. df[0:1][['name','id']]
  16. #下标访问同时可以用来过滤数据
  17. df[df['id']>'2']
  18. # .loc 和 .iloc .at .iat访问
  19. # 带i表示使用索引,没i则是使用标签值取获取,行列使用逗号,同时支持使用切片
  20. # df.iloc[[0,2],0:3]
  21. #loc列支持切片访问,[]是不支持列的切片访问的
  22. # df.loc[0:3,'name':'id']
  23. #列表
  24. df.columns
  25. #df.index
  26. # iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问。
  27. # itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高。
  28. # iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问。
  29. #遍历 行
  30. # for index,series in df.iterrows():
  31. # print(index)
  32. # print(series)
  33. #遍历列
  34. # for column,item in df.iteritems():
  35. # print(column)
  36. # print(type(item))
  37. for one in df.itertuples():
  38. print(one.age)

python collections模块使用

  1. #collections
  2. #defaultdict:可以提供默认值返回
  3. #OrderDict:记住插入顺序
  4. #Counter:用于计数,也是一个dict
  5. #nametuple:有点像定义一个类型
  6. #deque:插入比list更快,同时支持下标访问
  7. from collections import defaultdict,deque,namedtuple,OrderedDict,Counter
  8. default_dict = defaultdict()
  9. default_dict.get("test_key","default value")
  10. counter = Counter()
  11. counter['test_key']
  12. Point = namedtuple("Point",['x', 'y'])
  13. point = Point(1,2)
  14. deque = deque()
  15. deque.append('a')
  16. deque.appendleft('b')
  17. deque.append('c')
  18. deque.pop()
  19. deque.popleft()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/171999?site
推荐阅读
相关标签
  

闽ICP备14008679号