python相关的一些小便条

1.关于 No module named 'PIL' 

  如果是报错这个,不能直接 pip install PIL,需要装下面的

pip install pillow

 

2.关于No module named 'qcloud_cos'

  这个是腾讯云存储的组件

pip install -U cos-python-sdk-v5

 

3.关于文件命名

  如果文件命名跟命令冲突,会有可能导致命令的不执行

 

4.如果需要使用__init__.py文件,在项目目录下一般是无效的
  在项目根目录下,新建__init__.py 文件可以生成python包,
  但是在init文件里命名的参数,也需要 from . import  引入。

 

5.在使用多线程时,传入元组参数时,需要带上逗号(传入单个参数时),不然会报参数个数的错误。

def main():
    t1 = threading.Thread(target=test1,args=(g_nums,))  # 加上要传递的参数,元组类型

  附带有关多线程以字典形式传参的相关的知识

import threading
 
 
def eat(name, number):
    print("eating :%s number :%d" % (name, number))
 
 
def watch(name, type):
    print("watch : %s type:%s" % (name, type))
 
 
if __name__ == '__main__':
    eat_thread = threading.Thread(target=eat, kwargs={"name": "爆米花", "number": 1})
    watch_thread = threading.Thread(target=watch, kwargs={"name": "电影", "type": "科幻"})
 
    eat_thread.start()
    watch_thread.start()

  参考至这位博主:去看看

 

6. 在使用requests时 post json数据, 没有payload,加上下面代码就有了

data = {
"id": id,
'username': name
}
data=json.dumps(data) #这一步很重要,要用json dumps 转一下
requests.post(
url, data=data, headers=headers, verify=False
)

 

7. 使用python打开浏览器

 其中除了第三种不是以打开文件夹的方式打开的。

#1system方法
import os
os.system(r'C:\"Program Files (x86)"\"Google"\"Chrome"\"Application"\chrome.exe')
#2.tartfile方法

import os
os.startfile("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
#3.WEBBROWER方法

import webbrowser
webbrowser.open("http://www.baidu.com")
#4.win32api

import win32api
win32api.ShellExecute(0, 'open', 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', '', '', 1

 

8. 当生成密钥,或者token 可以使用 secrets ,需要python3.6以上

 """
    A secret key that will be used for securely signing the session cookie and can be used for any other security
     related needs by extensions or your application. It should be a long random bytes or str. For example, copy the 
     output of this to your config:
    $ python -c 'import secrets; print(secrets.token_hex())'
    """
    import secrets
    print(secrets.token_hex())

 

 9. 有关flask model 账号密码加密保存

from application import db
from application.models.common import GeneralModel
from werkzeug.security import generate_password_hash, check_password_hash


class User(db.Model, GeneralModel):
    __tablename__ = 't_admin'  # 设置表名, 表名默认为类名小写

    name = db.Column('username', db.String(20), unique=True)  # 设置字段名 和 唯一约束
    account = db.Column('account', db.String(20), unique=True, nullable=False)  # 设置字段名 和 唯一约束
    password_hash = db.Column(db.String(255), nullable=False)

    @property
    def password(self):
        raise AttributeError("密码不允许读取")

    # 转换密码为hash存入数据库
    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    # 检查密码
    def check_password_hash(self, password):
        return check_password_hash(self.password_hash, password)

 

10 查看模组与本地文件名重名bug

  注意 import 模组后  下面事本地文件报错。

 

11 enumerate()是python的内置函数、适用于python2.x和python3.x

  enumerate在字典上是枚举、列举的意思

  enumerate参数为可遍历/可迭代的对象(如列表、字符串)

  enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用enumerate

 

12 有关计算程序运行时间

  1秒 = 10分秒;1分秒 = 10厘秒;1厘秒 = 10 毫秒 ;1 毫秒 = 1000微秒;1微秒 = 1000纳秒;1纳秒 = 1000皮秒

  python 计算时间得组件是time, 有三种计算方式。

  详细可参考这篇博客:去看看

import time

# 常用计算,精确到小数点一位,单位是秒
s = time.time()
for i in range(10000):
    pass
e = time.time()
print(e - s)

# 精确计算,小数位后很多位,单位是秒
s = time.perf_counter()
for i in range(10000):
    pass
e = time.perf_counter()
print(e - s)

# 纳秒计算,整数,单位是纳秒
s = time.perf_counter_ns()
for i in range(10000):
    pass
e = time.perf_counter_ns()
print(e - s)

  结果

 

13 python 的复数类型

  a+bj,   a为实数,b为虚数部

  有关复数的描述可查看这里:去看看

 

14 python 取余数

  x%y  获取x除y的余数

  x//y   获取x除y的整数

  x**y  x的y次幂

   python 所有的运算符,都可以使用末尾等号连接

  x %= y  等同于 x = x % y

  x **= y  等同于 x = x ** y 

 

15 python的字符串以Unicode编码存储,字符串英文字符和中文字符都计作1个字符。

 

16 python元组判断大小原则

  元组之间的大小比较遵循以下规则:

  1. 如果两个元组的元素完全相同,则认为这两个元组相等。

  2. 如果两个元组的元素不全相同,则比较它们的第一个元素,第一个元素不相等的情况下,元组比较大小依据元素的ASCII值。

  3. 如果两个元组的第一个元素相同,则比较第二个元素,以此类推,直到比较出不同的元素或比较到最后一个元素。

 

17 .对复数取平方根,会生成复数

 

18 python 的三元运算

   max_num = num1 if num1 >= num2 else num2

 

19 python 函数的参数为列表时,会出现列表被保存现象

  产生上述现象的原因是:默认参数为可变类型时,如果多次使用默认参数来调用函数,该参数的状态是保持不变的,因为参数的默认值会且仅会在运行def语句时被初始化和保存一次,而不会在每次函数调用时都发生一次。

  参考地址:去看看

  实验代码

def func(ls=[]):
    ls.append(1)
    return ls

a = func()
b= func()
print(a, b)

  它并非是期望的,[1]  [1], 因为ls会被指向同一地址。

 

20  {}  0.0  ‘’  都是属于False

 

21  writelines 写入列表内容,不会自动换行。相当于 write, 接收list输入。

 ls = ['as', '666', 'll']
    f.writelines(ls)

  

22 idle python 怎么查看源文件

  在shell 里面可以使用help方法查看

  

posted @ 2023-05-09 11:20  PKGAME  阅读(94)  评论(0编辑  收藏  举报