随笔 - 290  文章 - 10  评论 - 85  2

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 = ['1', '2', '3', '4', '5']
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:\Users\Administrator\AppData\Local\Programs\Python\Python36>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/Python3.6/InstallCertificates.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='\n')

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()

 

posted on 2018-01-16 10:57  Gu  阅读(...)  评论(...编辑  收藏