一、Python基础知识

1.1 Python简介

[if !supportLists]• [endif]Python是一种面向对象、解释型的高级动态类型计算机程序设计语言

(1)解释型语言

解释型语言在运行程序的时候才逐行翻译、运行。

①优点:

有良好的平台兼容性,在任何环境中都可以运行(安装了解释器)灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

②缺点:

每次运行的时候都要解释一遍,性能上不如编译型语言

(2)动态类型语言

在运行期间才去做数据类型检查的语言。

1.2运算符和表达式

(1)除法

Python中的除法有两种,整数除法(//)和除法(/)

除法在Python2中,这个操作对于整数运算会省去小数部分,而对于浮点数运算会保持小数部分;在Python3中变成真除法(无论任何类型都会保持小数部分,即使整除也会表示为浮点数形式)。

 Python2Python3

3/500.6

3.0/50.60.6

(2)%取余数

对整数和浮点数计算余数。但是由于浮点数的精确度影响,计算结果可能略有误差。

(3),分隔符

>>> x = 3, 5

>>> x

(3, 5)

>>> 3==3, 5

(True, 5)

(4)*运算符

>>> 3*2 #数值乘法

6

>>>

"a"*10 #字符串重复

'aaaaaaaaaa'

>>> [1,2,3]*3 #列表重复

[1, 2, 3, 1, 2, 3, 1, 2,3]

>>> (1,2,3)*3 #元组重复

(1, 2, 3, 1, 2, 3, 1, 2,3)

1.3内置函数

函数功能简要说明

abs(x)返回数字x的绝对值

all(iterable)如果对于可迭代对象中所有元素x都有bool(x)为True,则返回True。对于空的可迭代对象也返回True

any(iterable)只要可迭代对象中存在元素x使得bool(x)为True,则返回True。对于空的可迭代对象,返回False

bin(x)把数字x转换为二进制串

callable(object)测试对象是否可调用。类和函数是可调用的,包含__call__()方法的类的对象也是可调用的

chr(x)返回ASCII编码(Py2)或Unicode编码(Py3)为x的字符

cmp(x, y)比较大小,如果xy则返回正数。Python 3.x不再支持该函数

dir()返回指定对象的成员列表。可以查看指定模块中包含的所有成员或者指定对象类型所支持的操作。

eval(s[, globals[, locals]])计算字符串中表达式的值并返回

filter(function or None, sequence)返回序列中使得函数值为True的那些元素,如果函数为None则返回那些值等价于True的元素。如果序列为元组或字符串则返回相同类型结果,其他则返回列表

float(x)把数字或字符串x转换为浮点数并返回

help(obj)返回对象obj的帮助信息

hex(x)把数字x转换为十六进制串

id(obj)返回对象obj的标识(地址)

input([提示内容字符串])接收键盘输入的内容,返回字符串。Python 2.x和Python 3.x对该函数的解释不完全一样,详见后面的1.4.8节

int(x[, d])返回数字的整数部分,或把d进制的字符串x转换为十进制并返回,d默认为十进制

isinstance(object,  class-or-type-or-tuple)测试对象是否属于指定类型的实例

len(obj)返回对象obj包含的元素个数,适用于列表、元组、集合、字典、字符串等类型的对象

list([x])、set([x])、tuple([x])、dict([x])把对象转换为列表、集合、元组或字典并返回,或生成空列表、空集合、空元组、空字典

map(函数,序列)将函数映射至序列中每个元素,返回列表或map对象

max(x)、min(x)、sum(x)返回序列中的最大值、最小值或数值元素之和

open(name[, mode[, buffering]])以指定模式打开文件并返回文件对象

ord(s)返回1个字符s的ASCII编码(Py2)或Unicode编码(Py3)

pow(x, y)返回x的y次方,等价于x**y

range([start, ] end [, step] )返回一个等差数列(Python

  3.x中返回一个range对象),不包括终值

reduce(函数,序列)将接收2个参数的函数以累积的方式从左到右依次应用至序列中每个元素,最终返回单个值作为结果

reversed(列表或元组)返回逆序后的迭代器对象

round(x [, 小数位数])对x进行四舍五入,若不指定小数位数,则返回整数

str(obj)把对象obj转换为字符串

sorted(列表[, cmp[, key[reverse]]]返回排序后的列表。Python

  3.x中的sorted()方法没有cmp参数

type(obj)返回对象obj的类型

zip(seq1 [, seq2 [...]])返回[(seq1[0], seq2[0] ...), (...)]形式的列表


可迭代对象

[if !supportLists]• [endif]迭代协议:有next()方法的对象会前进到下一个结果,而在一系列结果的末尾时,则会引发StopIteration异常

[if !supportLists]•   [endif]我们把可以通过for...in...这类语句迭代读取⼀条数据供我们使⽤的对象称之为可迭代对象(Iterable)

1.4基本输入输出

(1)基本输入

通过input( )函数来实现的,其一般格式为:

x = input(‘提示信息:')

[if !supportLists]• [endif]该函数返回输入的对象。可输入数字、字符串和其它任意类型对象

[if !supportLists]• [endif]在Python 2.x中,该函数返回结果的类型由输入值时所使用的界定符来决定(即输入什么得到什么)

[if !supportLists]• [endif]在Python 2.x中,还有另外一个内置函数raw_input()也可以用来接收用户输入的值。与input()函数不同的是,raw_input()函数返回结果的类型一律为字符串。例如:

[if !supportLists]• [endif]在Python 3中,不存在raw_input()函数,只提供了input()函数用来接收用户的键盘输入。在Python 3中,不论用户输入数据时使用什么界定符,input()函数的返回结果都是字符串,需要将其转换为相应的类型再处理

(2)基本输出

[if !supportLists]•   [endif]在Python 2中,使用print语句进行输出

[if !supportLists]•   [endif]而Python 3中,使用print()函数进行输出

[if !supportLists]•   [endif]默认情况下,Python将结果输出到IDLE或者标准控制台,在输出时也可以进行重定向,例如可以把结果输出到指定文件。在Python

2中使用下面的方法进行输出重定向:

>>> fp =open(r'C:\mytest.txt', 'a+')

>>> print>>fp, "Hello,world"

>>> fp.close()

而在Python 3中则需要使用下面的方法进行重定向

>>> fp =open(r'D:\mytest.txt', 'a+')

>>>print('Hello,world!', file = fp)

>>> fp.close()

[if !supportLists]•   [endif]Python中print的输出默认是换行的

[if !supportLists]•   [endif]对于Python 2而言,在print语句之后加上逗号“,”则表示输出内容之后不换行,例如:

>>> for i inrange(10):

     print i,

0 1 2 3 4 5 6 7 8 9

[if !supportLists]•   [endif]在Python 3中,如果要实现不换行需要在变量末尾加上end=""

>>> for i inrange(10,20):

     print(i, end=' ') 

10 11 12 13 14 15 16 17 1819


x="a"

# 换行输出

print( x )

# 不换行输出

print( x, end=" " )

# 打印空行

print()

[if !supportLists]•   [endif]print可以一次输出多个表达式

print(表达式1,表达式2,……)

1.5模块

[if !supportLists]• [endif]Python默认安装仅包含部分基本或核心模块,但用户可以利用pip安装大量的扩展模块

[if !supportLists]•   [endif]在Python启动时,仅加载了很少的一部分模块,在需要时由程序员显式地加载(可能需要先安装)其他模块

[if !supportLists]•   [endif]减小运行的压力,仅加载真正需要的模块和功能

[if !supportLists]•   [endif]可以使用sys.modules.items()显示所有预加载模块的相关信息

[if !supportLists]•   [endif]建议每个import语句只引入一个模块

[if !supportLists]•   [endif]将整个模块导入:

import模块名[as 别名]

导入后,使用导入模块中的对象需要加上前缀(“模块名.对象名”)。若为导入模块设置别名,则前缀可以为别名(“别名.对象名”)

[if !supportLists]•   [endif]从某个模块中导入指定对象:

 from 模块名 import 对象名[as 别名]

建议使用的方式。这种导入方式可以减少查询次数,提高访问速度,使用对象时不需要用模块名作为前缀。

[if !supportLists]•   [endif]从某个模块中导入全部对象:

from 模块名import *

不推荐使用的方式。一旦多个模块中有同名对象,这种方式将导致混乱。

[if !supportLists]•   [endif]可以使用dir函数查看任意模块中所有的对象列表,如果调用不带参数的dir()函数,则返回当前脚本的所有名字列表。

[if !supportLists]•   [endif]可以使用help函数查看任意模块或函数的使用帮助。

[if !supportLists]•   [endif]在2.x中可以使用reload函数重新导入一个模块,在3.x中,需要使用imp模块的reload函数。注意:重新加载模块要求该模块已经被正确加载。

[if !supportLists]•   [endif]Python首先在当前目录中查找需要导入的模块文件,如果没有找到则从sys模块的path变量所指定的目录中查找。可以使用sys模块的path变量查看python导入模块时搜索模块的路径,也可以向其中append自定义的目录以扩展搜索路径。

[if !supportLists]• [endif]在导入模块时,会优先导入相应的pyc文件,如果相应的pyc文件与py文件时间不相符,则导入py文件并重新编译该模块。

[if !supportLists]•   [endif]导入模块建议按照以下顺序:

[if !supportLists]•   [endif]Python标准库模块:如os、sys、re

[if !supportLists]•   [endif]第三方扩展库:如PIL、numpy、scipy

[if !supportLists]•   [endif]自定义本地模块

1.6代码编写规范(PEP 8)

(1)缩进

[if !supportLists]•   [endif]Python程序依靠代码块的缩进来体现代码之间的逻辑关系

[if !supportLists]•   [endif]类定义、函数定义、选择结构、循环结构,行尾的冒号表示缩进的开始

[if !supportLists]•   [endif]以4个空格为基本缩进单位

[if !supportLists]•   [endif]同一个级别的代码块的缩进量必须相同

[if !supportLists]•   [endif]不要将空格和Tab(制表符)混用

(2)变量名

[if !supportLists]•   [endif]普通变量:小写字母,单词之间用_分割

this_is_a_var

[if !supportLists]•   [endif]类名:单词首字母大写

ClassName

[if !supportLists]•   [endif]全局变量名:大写字母,单词之间用_分割

GLOBAL_VAR

(3)注释

[if !supportLists]•   [endif]常用的注释方式主要有两种:

[if !supportLists]•   [endif]以#开始,表示本行#之后的内容为注释

[if !supportLists]•   [endif]包含在一对三引号'''...'''或"""..."""之间且不属于任何语句的内容将被解释器认为是(多行)注释

# 第一个注释


'''

第二注释

第三注释

'''


"""

第四注释

第五注释

"""


(4)编写规范

[if !supportLists]•   [endif]①如果一行语句太长,可以在行尾加上\来换行分成多行

total = item_one +\

        item_two+\

        item_three

在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(\),例如:

total = ['item_one', 'item_two', 'item_three',

        'item_four', 'item_five']


[if !supportLists]•   [endif]②运算符两侧、函数参数之间、逗号两侧建议使用空格分开

[if !supportLists]•   [endif]③不同功能的代码块之间、不同的函数定义之间增加一个空行以增加可读性

1.7 Python文件名

[if !supportLists]•   [endif].py:Python源文件,由Python解释器负责解释执行。

[if !supportLists]•   [endif].pyw:Python源文件,常用于图形界面程序文件。

[if !supportLists]•   [endif].pyc:Python字节码文件,无法使用文本编辑器直接查看该类型文件内容,可用于隐藏Python源代码和提高运行速度。对于Python模块,第一次被导入时将被编译成字节码的形式,并在以后再次导入时优先使用“.pyc”文件,以提高模块的加载和运行速度。对于非模块文件,直接执行时并不生成“.pyc”文件,但可以使用py_compile模块的compile()函数进行编译以提高加载和运行速度。另外,Python还提供了compileall模块,其中包含compile_dir()、compile_file()和compile_path()等方法,用来支持批量Python源程序文件的编译。

[if !supportLists]•   [endif].pyo:优化的Python字节码文件,同样无法使用文本编辑器直接查看其内容。可以使用“python –O -m py_compile file.py”或“python –OO -m py_compile file.py”进行优化编译。

[if !supportLists]•   [endif].pyd:一般是由其他语言编写并编译的二进制文件,常用于实现某些软件工具的Python编程接口插件或Python动态链接库。

1.8 __name__和__init__

[if !supportLists]•    [endif]每个Python脚本在运行时都有一个“__name__”属性

[if !supportLists]•   [endif]如果脚本作为模块被导入,则其“__name__”属性的值被自动设置为模块名

[if !supportLists]•    [endif]如果脚本独立运行,则其“__name__”属性值被自动设置为“__main__”

[if !supportLists]•   [endif]利用“__name__”属性可以控制Python程序的运行方式

[if !supportLists]•   [endif]例如,编写一个包含可被其他程序利用的函数的模块,而不希望该模块可以直接运行,则可以在程序文件中添加以下代码:

if__name__=='__main__':

    print'Please use this as a module'

[if !supportLists]•   [endif]这样一来,程序直接执行时将会得到提示“Please use

this as a module.”,而使用import语句将其作为模块导入后可以使用其中的类、方法、常量或其他成员

[if !supportLists]•   [endif]包是Python用来组织命名空间和类的重要方式,可以看作是包含大量Python程序模块的文件夹。在包的每个目录中必须包含一个__init__.py文件,该文件可以是一个空文件,仅用于表示该目录是一个包。__init__.py文件的主要用途是设置__all__变量以及执行初始化包所需的代码,其中__all__变量中定义的对象可以在使用“from … import *”时被全部正确导入

1.9 调用python解释器与指定编码

#!/usr/bin/python3

# -*- coding: UTF-8 -*-

print("Hello, World!");

注意文件开头的两行注释,最好在每个文件的开头都加上。

第一行注释标的是指向python 的路径,告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器。为了跨平台兼容,应加上该注释。

第二行注释指定文件编码为UTF-8。默认情况下,Python 3.x 源码文件以UTF-8编码,而Python2.x的默认编码是ASCII。为了跨版本兼容,应加上该注释。


ที���85V��

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,726评论 0 38
  • 文章图片上传不正常,如需文档,可联系微信:1017429387 目录 1 安装... 4 1.1 配置探针... ...
    Mrhappy_a7eb阅读 6,280评论 0 5
  • UIKit Dynamics (一) 概述UIKit Dynamics (二) 重力UIKit Dynamics ...
    bewils阅读 936评论 0 8
  • 百日营21天总结 @郭琳静_Grace 欠下的债总是要还的!每天心里惦记着要写这篇总结却总也没时间。 那我最近在忙...
    钱二姐阅读 398评论 5 1
  • 长大后,时间开始变得很慢,每天会有很多时间,却不知要做些什么。不再晚上的时候想明天穿什么,不再早上的时候犹豫等会吃...
    南无兮阅读 630评论 0 0