python学习记录
最后更新于:2022-04-02 04:33:09
## python学习记录
记录 python的学习之旅。
----
### PyCharm 使用记录
> python 语法最接近自然语言,也就是像我们平常说话那般自然,即使你不熟悉语法,当你不知道该怎么写时,你就按照自己的想法写,你会发现很多时候你总是对的,它就是你所想的那样,python 就是这样,就是你所想的样子,那样自洽,那样自然,那样简单,不需要任何的刻意,它不追求任何技巧,不故作高深,只是人思想的自然表达而已,仿佛每个人天生就熟悉它。
### 1. 控制台中文输出乱码
解决方法:https://www.cnblogs.com/it-tsz/p/9823536.html
1. 文件->设置->编辑器->文件编码:项目编码 - GBK
2. 文件->设置->编辑器->文件和代码模板->Python Script:`# coding=utf-8`
----
### 2. OSError: Cannot load native module 'Crypto.Cipher._raw_ecb':
```
OSError: Cannot load native module 'Crypto.Cipher._raw_ecb': Trying '_raw_ecb.pyd': [Error 193] %1 不是有效的 Win32
```
https://github.com/Legrandin/pycryptodome/issues/155
上面报错不是这个问题,而是 64位的操作系统,只能安装 64位的 python 才行。https://www.python.org/downloads/release/python-2718/
----
### 3. 关闭 sql 等警告提示
通常我们不需要它检查sql,因为这需要链接数据库,而数据库还可能是远程的,开发时不希望连接检查。
https://blog.csdn.net/weixin_42686768/article/details/97121081
https://www.cnblogs.com/lurenjia1994/p/9681637.html
https://www.cnblogs.com/zq8421/p/10356383.html
https://www.cnblogs.com/wisir/p/10898469.html
https://blog.csdn.net/windscloud/article/details/80208960
[Python基础之PEP8规范(代码写作规范) - 知乎](https://zhuanlan.zhihu.com/p/88729367)
[Python PEP8 编码规范中文版_基因记忆-CSDN博客](https://blog.csdn.net/ratsniper/article/details/78954852)
https://legacy.python.org/dev/peps/pep-0008/
----
### 4. pyautogui.click() 没有效果
[51模拟器使用python pyautogui点击没有效果的解决方法_york1996的博客-CSDN博客](https://blog.csdn.net/york1996/article/details/104154806)
> 右键启动pycharm或者其他ide的时候选择以管理员权限启动即可。
----
### 5. 插件
CodeGlance 类似 sublime 中的代码预览地图
### 6. 关闭IDE时选择终止或断开连接的区别
PyCharm 终止和断开连接不一样,终止是正常关闭正在执行程序,如 `db` 类析构时会断开数据库连接,而非正常终止程序断开连接则不会这样,没有执行析构。
----
## python 学习记录
### pymysql 参数绑定
`cursor.execute(' select ... %s ', [])`
使用参数绑定而不是sql拼接,这是防止 SQL 注入 的最安全的方法。(注意使用参数绑定时,`%s` 占位符不需要使用引号)
https://www.cnpython.com/qa/194936
----
### windows 使用 pyautogui 时要注意的
windows 使用 pyautogui 时,不能关掉链接,甚至小窗远程连接也不行
https://www.cnblogs.com/sophia201552/p/13344320.html
按这个方法也不行
----
### 注意库模块的隐式引用
~~~
C:\Python27\python.exe D:/wamp64/www/xiak-DataValley/test_xiak/t.py
Traceback (most recent call last):
File "D:/wamp64/www/xiak-DataValley/test_xiak/t.py", line 4, in
from selenium import webdriver
File "C:\Python27\lib\site-packages\selenium\webdriver\__init__.py", line 27, in
from .safari.webdriver import WebDriver as Safari # noqa
File "C:\Python27\lib\site-packages\selenium\webdriver\safari\webdriver.py", line 20, in
import http.client as http_client
File "D:\wamp64\www\xiak-DataValley\test_xiak\http.py", line 17
str = json.dumps(cookies)
^
IndentationError: expected an indented block
~~~
`C:\Python27\lib\site-packages\selenium\webdriver\safari\webdriver.py` 第19行还有这样的代码:
```python
try:
import http.client as http_client
except ImportError:
import httplib as http_client
```
而项目目录 刚好有 D:\wamp64\www\xiak-DataValley\test_xiak\http.py 这个文件,所以被当作模块引用了,看来在不了解所使用的库时,不能随便定义文件模块啊。这有点类似于php中的依赖注入,但这个竟然是隐式的。
----
[非常详细的字符编码讲解,ASCII、GB2312、GBK、Unicode、UTF-8等知识点都有](https://www.bilibili.com/video/BV1gZ4y1x7p7)
[非常生动的Python2和Python3的编解码讲解](https://www.bilibili.com/video/BV1XK4y1t7D4)
[HelloDjango - django REST framework 教程_追梦人物的博客](https://www.zmrenwu.com/courses/django-rest-framework-tutorial/)
----
### 函数参数
1. 位置参数(必传,支持按顺序或按参数名传入)
2. 默认参数(支持按顺序或按参数名传入,不传入参数时,默认值为缺省值)
3. 可变参数 *args(参数数量不是固定的,函数接受到的参数是一个 tuple )
4. 关键字参数 **kwargs(允许任意个按参数名传入参数,函数接受到的参数是一个 dict)
5. 可变关键字参数(限制关键字参数的k,如限制必传,也可以有默认值;* 后面的都是命名关键字参数,如果已经有了一个可变参数,后面的命名关键参数就不需要 * 了)
> 对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。(按顺序传参,按参数名传参)
[函数的参数 - 廖雪峰的官方网站](https://www.liaoxuefeng.com/wiki/1016959663602400/1017261630425888)
----
### 模块引用
python import 相当于 php 中的 `require_once`,只会引入执行一次。
----
last update: 2020-11-23 10:27:18
';