python笔记

$python3 -V
组(suite)--Python代码块,会通过缩进来指示分组
标识符是指示数据对象的名字。标识符没有类型,不过标识符所指示的数据对象有类型
WingIDE是一个比较好的Python开发IDE。
Python包索引(Python Package Index,
PyPI--"pie-pie"):Python存储库,就像Perl的CPAN储存库。

python命令行自动补全功能,可以把这个配置放到~/.pythonrc里:

>>> import rlcompleter, readline
>>> readline.parse_and_bind('tab: complete')


发布模块:
    1、为模块创建一个文件夹nester,nester.py模块文件复制到这个文件夹
    2、在nester中创建一个名为setup.py的文件,内容如下:
        from distutils.core import setup
        setup(
            name = 'nester',
            version = '1.0',
            py_modules = ['nester'],
            author = 'wanghy'
            author_email = '[email protected]',
            url = 'http://www.wanghy.com',
            description = 'A simple printer of nested lists',
        )
    3、构建一个发布文件
        打开终端定义到nester文件夹中,键入命令:python3 setup.py sdist
    4、将发布安装到你的Python本地副本中
        仍在终端键入命令:python3 setup.py install
    5、安装成功后nester中多了build、dist等文件
        注:pyc文件主要是为了运行时优化
    6、然后就可以在Python中导入使用nester模块了
        import nester
        nester.print_lol(lst)
        或
        from nester import print_lol #但是这样会搅乱当前命名空间
        print_lol(lst)

向PyPI上传代码:
    1、先在http://pypi.python.org/网站上注册
    2、终端中登录,键入命令:python3 setup.py register
    3、上传发布,键入命令:python3 setup.py sdist upload

IDLE:
    >>>后键入pr,按Tab会出现提示
    Alt-P:前一个历史记录,mac是Ctrl-P
    Alt-N:下一个历史记录,mac是Ctrl-N
    dir(__builtins__) #可以查看Python提供的内置方法(BIF),小写单词为BIF
    help(input) #查看input方法的API帮助
    help() #进入帮助文档
    打开nester.py文件,按F5运行模块nester

""" 多行注释 """
''' 多行注释 '''
# 单行注释
lst = [1, 'a', ['b']] #声明变长有序列表(list),元素可混合
print(lst[0]) #打印元素
len(lst) #获取长度
lst.append(3) #末尾增加数据项
lst.pop() #末尾删除数据
lst.pop(0) #删除第一个数据项
lst.extend([4, 5]) #末尾增加数据项集合
lst.remove('a') #删除一个特定数据项
lst.insert(0, 'a') #特定位置增加数据项

#for
for item in lst:
    print(item)
#while
count = 0
while count < len(lst):
    print(lst[count])
    count += 1
#if...elif...else...
if isinstance(lst, list):
    print('lst is a list' + lst)
else:
    print('lst not\'s list')
#def function
#如果为函数参数提供了缺省值,这个函数参数就是可选的
import sys #导入模块sys,stdout为标准输出
def print_lol(the_list, level=-1, fh=sys.stdout):
    for each_item in the_list:
        if isinstance(each_item, list):
            print_lol(each_item, level+1, fh)
        else:
            for tab_stop in range(level):
                print("\t", end='', file=fh)
            print(each_item, file=fh)

list() #这是一个工厂函数,创建一个新的空列表
range() #返回一个迭代器,根据需要生成一个指定范围的数字
enumerate() #创建成对数据的一个编号列表,从0开始
int() #将一个字符串或另一个数转换为一个整数(如果可行)
id() #返回一个Python数据对象的唯一标识
next() #返回一个可迭代数据结构(如列表)中的下一项

python的主命名空间名为__main__。

#File
import os
os.getcwd() #获取当前工作目录
os.chdir('..') #修改工作目录
data = open('xxx.txt') #打开文件,创建一个迭代器读取数据
print(data.readline(), end='') #读取一行数据
data.seek(0) #返回文件起始位置,对于py文件也可用tell()
for line in data: #迭代读取每行数据
    print(line, end='')
data.close() #关闭文件
split()可以将一个字符串分解为一个子串元组
元组(tuple)不可变列表,也称常量列表
find()会在一个字符串中查找一个特定子串
not关键字将一个条件取反
pass是Python的空语句或null语句,它什么也不做
#访问模式w时,打开指定文件写入。
#如果文件已存在,则清除现有内容重新写入;如果文件不存在,则创建文件并写入。
#要追加到一个文件用访问模式a。要打开文件来完成写和读(不清除),使用w+。
out = open('data.out', 'w')
print('File content.', file=out) #file参数控制将数据发送/保存到哪里
out.close()
strip()可以从字符串去除开头和结尾的空白符。如果指定了参数如'a',则删除字符串中的'a'
finally组总会执行
会向except组传入一个异常对象,并使用as关键字赋至一个标识符
str()可以用来访问任何数据对象(支持串转换)的串表示
locals()返回当前作用域中的变量集合
in操作符用于检查成员关系
with语句会自动处理所有已打开文件的关闭工作,即使出现异常也不例外,也使用as
pickle.dump()将数据保存到磁盘
pickle.load()从磁盘恢复数据
sort()方法可以原地排序,传入reverse=True按降序排列
sorted()BIF通过提供复制排序可以对几乎任何数据结构排序,传入reverse=True按降序排列
列表推导:
    new_l = []
    for t in old_l:
        new_l.append(len(t))
    可写作
    new_l = [len(t) for t in old_l]
"条件"列表推导尾部包括一个if语句,允许在推导运行时控制哪些项可以增加到新列表中。
new_l = [len(t) for t in old_l if len(t) > 2]
列表推导可以重写为一个等价的for循环。

分片:访问一个列表中的多个数据项my_list[3:6]--包括索引3,不包括索引6
set()工厂方法创建集合,一组无序的数据项,其中不包含重复项

我只顾前行,开启一个旅程,却不想成为路上的风景

#字典/映射/散列/关联数组
dict() {} 创建空字典
new_d = {'name': 'wanghy'} 创建字典
new_d['name'] 取值
new_d['age'] = 20 增加数据项

#类(class)
self--这是一个方法参数,总是指向当前对象实例。
@property 这是一个修饰符,可以使类方法表现的像是一个类属性

CGI -- 通用网关接口(Common Gateway Interface),允许web服务器运行一个服务端程序。
标准库glob模块适合处理文件名列表。
启用标准库cgitb模块时,允许在浏览器中查看CGI编码错误,cgitb.enable()打开CGI跟踪。
form_data = cgi.FieldStorage() #获取web请求数据,返回一个字典
athlete_name = form_data['which_athlete'].value

SL4A(Scripting Layer for Android) -- 允许在你的Android设备上运行Python。
json.dumps()可以创建一个python类型的字符串版本。
json.loads()可以从一个json字符串创建一个python类型。
如果数据使用json发送,Content-Type:application/json。
urllib和urllib2库模块可以用来从一个程序向web服务器发送编码的数据(使用urlencode()和urlopen()函数)
sys模块提供了sys.stdin/sys.stdout和sys.stderr输入流。

os库包含一个environ字典,用于访问环境变量。
# sqlite3
connect()建立与数据库文件的连接
cursor()通过一个已有的连接与数据库通信。
execute()向数据库发送一个SQL查询
commit()提交,永久保存。
rollback()回滚
close()关闭连接
"?"SQL语句参数占位符



你可能感兴趣的:(python笔记)