Python程序是大小写敏感的! 以#
开头的语句是注释,每一行都是一个语句,当语句以冒号:
结尾时,缩进的语句视为代码块。
数学运算
a的N次方例如2**4表示2*2*2*2
10的N次方,可以写成eN, 例如 1.23x109就是1.23e9
10//3 表示10除以3取整(去掉小数), 如果要四舍六入五成双,则用round(). 如果要进1, 则要先import math, 然后用math.ceil(3.3)
数组切片
L[M:N] 表示是 从索引
M
开始取,直到索引N
为止,但不包括索引N. 省略M,则默认M=0; 省略N,则取到最后一个索引,倒数第一个元素的索引是-1
。
>>> L[0:3]
['1', '2', '3']
>>> L[1:]
['2', '3', '4', '5']
>>> L[-1]
'5'
>>> L[-3:]
['3', '4', '5']
>>> L[-3:-5]
[]
>>> L[-5:-3]
['1', '2']
list元素也可以是另一个list
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4
定义类和函数,依次写出函数名、括号、括号中的参数和冒号
:
,然后,在缩进块中编写函数体,函数的返回值用return
语句返回
class Utility:
def ToGB(str):
return str.decode('gb2312')
类型转换, str(), int() 函数
python假设需要进行int转型的字符串仅仅包含数字,所以int("1.0") 会出错 invalid literal for int() with base 10:
windows 安装python后,启动时提示缺少api-ms-win-crt-runtime-l1-1-0.dll
请安装Visual C++ Redistributable for Visual Studio 2015 组件,但不知道为什么,我的是win7 64位系统, 却要安装vc redist x86版本,安装x64版本却不行
https://www.microsoft.com/zh-cn/download/details.aspx?id=48145
windows 安装py包
C:UsersAdministratorAppDataLocalProgramsPythonPython36>py -m pip install xlrd
mac python版本选择
mac 自带python2.7, 在终端命令行打python,默认启动2.7,我们学习的是python3.6, 终端命令行要打python3.6即可
lrwxr-xr-x 1 root wheel 71 1 10 22:12 python3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
mac python urllib访问https出现CERTIFICATE_VERIFY_FAILED解决方案
由于默认python3.6没有任何证书,我们需要手动安装:
打开终端运行:
sudo /Applications/Python 3.6/Install Certificates.command
mac idle为何不能输入中文?该如何解决?
Python模块的标准文件模板
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' a test module '
__author__ = 'terry zhang'
第1行和第2行是标准注释,第1行注释可以让这个hello.py
文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码;
第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;
第6行使用__author__
变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;
以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。
上下文管理器(context manager)是Python2.5开始支持的一种语法,用于规定某个对象的使用范围。一旦进入或者离开该使用范围,
会有特殊操作被调用 (比如为对象分配或者释放内存)。它的语法形式是with...as...
# with context manager
with open("new.txt", "w") as f:
print(f.closed) f.write("Hello World!")
print(f.closed)
经常会在代码的最下面看到if __name__ == '__main__':,它的作用
模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。
在cmd 中直接运行.py文件,则__name__的值是'__main__';
而在import 一个.py文件后,__name__的值就不是'__main__'了;
从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件
windows, csv输出时会多一行出来,怎么处理?
csv输出时多一行, 这样写就不会 writer = csv.writer(csvfile,lineterminator=' ')
https://stackoverflow.com/questions/3191528/csv-in-python-adding-an-extra-carriage-return
print 函数,每个项都有左右两边的空格,怎么去掉.
print('",address,"','",phone,"','",recvName,"',1,'",province,"','",city,"','",region,"','",shop,"','",jieduan,"')",sep='')
怎么访问sqlserver
py -m pip install pyodbc
import pyodbc
#https://github.com/mkleehammer/pyodbc/wiki/Cursor
cnstr = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.1.2\sql;DATABASE=testDB;UID=sa;PWD=myPassword')
cursor = cnstr.cursor()
phone=13012345678
for row in cursor.execute("select cusid from customer where phone='"+ str(phone)+"'"):
cusid=row.ccusid
python自带的查看帮助功能,可以在编程时不中断地迅速找到所需模块和函数的使用方法
例如要查询math模块的使用方法,可以如下操作:
>>> import math
>>> help(math)
列举出math模块下所有的函数名称
>>> dir(math)
查看math下的sin()函数
>>> help(math.sin)
AttributeError: module 'json' has no attribute 'load'
犯了低级失误, 我的python文件名叫json.py, 用import json,没有导入 python 内置的模块,而是导入了本地的json.py 文件!!
Python 处理包也是相当方便的,简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件。
最简单的情况下,init.py 为空文件即可,当然它也可以执行包的一些初始化代码。
每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包。只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用。
列表推导式(list comprehension)是一种简化代码的优美方法
#http://python.jobbole.com/80823/ 1 平方列表 squares = [x**2 for x in range(10)] 2 整除3的数字列表 numbers = [x for x in range(100) if x % 3 == 0] ...
pathlib:优雅的路径处理库
from pathlib import Path
p= Path('cust_a.csv')
print(p.read_text('utf-8'))
p的父路径
p.parent
所有p的祖辈路径
p.parents #返回一个列表,序号越大离p越远
p目录下的所有文件
p.iterdir() # 返回一个迭代器,包含p下所有文件
判断p是不是文件
p.is_file()
判断p是不是目录
p.is_dir()
判断p是不是绝对路径
p.is_absolute()
判断p是否符合某一模式
p.match('C:Windows*')
在p下搜索符合某一模式文件
p.glob('*.py')
在p及其子目录下搜索符合某一模式文件
p.glob('***.py')
p.rglob('*.py')
当p不是目录时,将其创建为目录
p.mkdir()
当p是空目录时,移除p
p.rmdir()
利用relative_to获取当前目录文件名
p.relative_to(p.parent)
当p是文件时
获取文件名
p.name
获取后缀
p.suffix
解决mac上matplotlib(plot)无法显示中文的问题
from matplotlib import pyplot as plt from matplotlib.font_manager import FontProperties import random from pylab import * myfont = FontProperties(fname="/System/Library/Fonts/stHeiTi Medium.ttc",size=18) plt.rcParams['axes.unicode_minus'] = False t = np.arange(-5*pi, 5*pi, 0.001) print(t) y = sin(t)/t print(y) my_post = plt.plot(t, y) plt.title(u'matplotlib中文显示测试terry ',fontproperties=myfont) plt.xlabel(u'这里是X坐标',fontproperties=myfont) plt.ylabel(u'这里是Y坐标',fontproperties=myfont) plt.show()