python基础简介

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。具有丰富的第三方库,官方库中也有相应的功能模块支持,覆盖了网络、文件、GUI、数据库、文本等大量内容。

__name__属性

每个模块都有一个__name__属性,当其值是'__main__'时(双下划线),表明该模块自身在运行,否则是被引入。

#!/usr/bin/python3

# Filename: using_name.py

...

if __name__ == '__main__':

print('程序自身在运行')

else:

print('我来自另一模块')

开发规范

Python中逻辑层次通过缩进(空格或Tab)进行界定,从而决定语句的分组:

同一层次语句必须有相同的缩进:每一组这样的语句称为一个块;

一般每个缩进使用一个Tab;

逻辑判断(if)、循环(for)语句均以冒号(:)结尾,后续执行语句缩进;

Python中注释

单行注释:#,在linux下文件开头使用#做一些指示说明

#!/usr/bin/env python

# -*- coding:utf-8 -*-

多行注释:三个成对的单引号(或双引号)

语句跨行

三引号:作为字符串时,会引入换行符;

使用'\':在行尾使用\表示有更多行;

使用括号括起多个字符串:不只用于字符串,也可用于其他语句的分行(()[]{}括起的语句,可直接跨多行):

words = 'cats dog'\

' monkey'

animal = ('cat '

'dog')

if ( words is None

and animal is not None): #括号是必须的

变量与类型

python变量不需要预先声明:

初次赋值即为定义(根据赋值类型决定变量的类型);

但引用前必须保证变量已定义(赋值过);

已定义的变量可通过del(del var)来删除,删除后就不能再引用了。

python按如下顺序查找变量:当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量

全局变量通过global关键字引入(否则函数内部所有定义的都为局部变量);使用nonlocal关键字引入外层作用域(非全局)变量:具体参见:

python3变量与类型说明

六种标准数据类型:

数字:int、float、bool(True、False)、complex;

int整型没有大小限制,只与内存有关;

复数complex中使用j表示虚数部分:1+2j;

math库提供数字操作,cmath库提供复数操作;

字符串:str;

+:连接字符串;

*:多次复制字符串,'12'*3为'121212';

列表:list,[a,b...]

元组:tuple,(a,c...)

定义只有一个元素的元组时,后面要带逗号:如("mytuple",)若没有逗号,则作为字符串处理。

集合:set,

空集合只能用set()来创建;

set('quant')->{'q','u','a','n','t'}

{'quant'}->{'quant'}

字典:dict,

{}:是创建空字典,创建空集合只能通过set();

字符串:python3中字符串使用Unicode编码

单引号:可包含双引号;

双引号:可包含单引号;

三引号(三个单或双引号):可以跨多行(可用作注释);

raw字符串:以r开始,使转义失效(r"test\wend"),在正则表达式中非常有用;

常用类型转换

int(x [,base ]):将x转换为一个整数

float(x):将x转换到一个浮点数

complex(real [,imag ]):创建一个复数

str(x):将对象 x 转换为字符串

repr(x):将对象 x 转换为表达式字符串

eval(str):计算在字符串中的有效Python表达式,并返回一个对象

tuple(s):将序列 s 转换为一个元组

list(s):将序列 s 转换为一个列表

chr(x):将一个整数转换为一个字符

unichr(x):将一个整数转换为Unicode字符

ord(x):将一个字符转换为它的整数值

hex(x):将一个整数转换为一个十六进制字符串

oct(x):将一个整数转换为一个八进制字符串

变量类型判断,python提供内置函数用于类型判断:

type(var):获取变量类型;

isinstance(var, type):判断是否为指定类型;

type不处理继承关系;判断子类型是否为父类型,需要使用isinstance。

is(身份id运算符)与==:

is:两个对象是否完全相同(id相同,指向同一个地址);速度快

判断是否为None时推荐用is;

相当于id(a)==id(b);

==:比较对象的值是否相等;相等的两个变量,id可能不同。

序列与集合:列表解析与迭代见python3迭代器与生成器

序列指其中对象从0开始依次编号,有前后顺序关系;如列表、元组、字符串;

映射是无序的键与值的映射关系;如字典;

集合记录某些无顺序关系的不可变对象是否存在于其中,其中没有重复的元素;如集合set;

序列切片(Slice),可用于操作列表、元组、字符串:

切片是获取 [start:end:interval]范围内值,返回[start, end),即不包括end元素;三者的取值可正可负,也可省略(start默认0,end默认列表长度,interval默认1),全部省略为列表复制;

列表每个数字对应正、负两个索引(正索引左起,从0开始;负索引右起,-i即为len-i处,如-1为最后一个元素),第一个元素对应的下标为0,最后一个元素对应的下标为-1;

interval中的正负号规定了取数的方向是从左到右(+)还是从右到左(-)。如果有interval,先确定其方向(没有的话默认为从左到右取值)。

列表增减元素:

L.append(object) :是将一个对象作为一个整体添加到列表中,添加后的列表比原列表多一个元素;

L.extend(iterable):是将一个可迭代对象中的每个元素逐个地添加到列表中,可迭代对象中有几个元素,添加后的列表就比原列表多几个元素;

L.pop(index):是按索引号来删除列表中对应的元素,并返回该元素;若空,即pop(),将删除最后一个元素;

L.remove(value): 是根据参数value在列表中查找,若找到某个元素的值和参数相等,则将该元素删除,若没有找到,则抛出异常;

基本语句

pass语句:属于空(null)操作,作为占位语句,用于必须有语句但有没有任何操作时;

三元操作:a=X if expression else Z

expression为true,a为X;否则为Z

条件判断语句

if condition_1:

statement_block_1

elif condition_2:

statement_block_2

else:

statement_block_3

循环语句: for 和 while(continue与break可中断循环)

While循环

while :

条件满足时执行的语句

[else: #执行完循环后会执行

条件不满足时执行的语句

]

For循环

for in :

条件满足时执行的语句

[else:#执行完循环后会执行

条件不满足时执行的语句

]

for与range组合

#for _ in range(10)#若不需要序号,可使用下划线

for i in range(10)

print(i) #打印0...9

range内置函数

range(stop) #返回[0 .. Stop)

range(start, stop[, step]) #返回[Start, Stop),step默认为1(若为负数,则需要stop

运算符

比较运算符:==、!=;

成员运算符:in与not in,判断元素是否在集合中;

逻辑运算符:and、or、not;

身份运算符:is与is not,判断两个标识符是否引用同一个对象;

算术运算符

在字符串运算中:

+:字符串连接

*:重复输出字符串、元组、列表

%:格式化字符串;格式化见python3输入输出与字符串格式化

位运算符

函数

函数是组织好的、可重复使用的代码段(参数见python可变参数与关键字参数)

def (arg1,...argN)

return [expression]

匿名函数

lambda [arg1, ...argN]: expression

冒号前可有多个参数(也可没有);

冒号后只能是一个表达式(不能是代码块),表达式的结果即为返回值;

整个lambda就是一个表达式;

类,面向对象

类是定义具有相同属性和方法的集合(Python类、变量属性及方法),对象是类的实例:

class ClassName:

Python支持多继承形式。多继承的类定义形如下例:

class DerivedClassName(Base1, Base2, Base3):

圆括号中父类的顺序会影响方法调用:若父类中有相同的方法名,而在子类调用时未指定,python从左至右搜索(即方法在子类中未找到时,从左到右查找父类中是否包含方法)。

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是self:

class Test:

def prt(self):

print(self)

print(self.__class__)

t = Test()

t.prt()

模块与包

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块。python解释器在启动时会自动加载一些模块,可以使用sys.modules查看

import module1[, module2[,... moduleN]

import spam as sm #sm为spam的别名

from modname import name1[, name2[, ... nameN]]

优点:方便,不用加前缀

缺点:容易跟当前文件的名称空间冲突

from spam import read1 as read

from spam import * #所有的不是以下划线(_)开头的名字都导入到当前位置,

__all__来控制import*(可用于控制新版本发布)

如:__all__=['money','read1'] #from spam import *就只会导入这两个

包是模块的结构化管理思想:

由模块文件构成(众多相关功能的模块文件结构化组合成包);

是一种通过使用‘.模块名’来组织python模块名称空间的方式。

包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__int__.py用于标识当前文件夹是一个包。

第一次导入包或者是包的任何其他部分,都会依次执行包下的__init__.py文件

无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警觉:这是关于包才有的导入语法。.的左边必须是包。

Python 中,有大量的内置模块,模块中的定义(例如:变量、函数、类)众多,不可能全部都记住,这时 dir() 函数就非常有用了。

dir() 是一个内置函数,用于列出对象的所有属性及方法(返回list)。

如果 dir() 没有参数,则返回当前作用域中的名称列表;否则,返回给定 object 的一个已排序的属性名称列表。

如果对象提供了 __dir__() 方法,则它将会被使用;否则,使用默认的 dir() 逻辑,并返回。

使用 dir() 可以查看指定模块中定义的名称,它返回的是一个已排序的字符串列表。

__builtins__:内建模块,dir(__builtins__)列出内建对象

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181216G0LYOF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券