py基本语法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了py基本语法相关的知识,希望对你有一定的参考价值。

参考技术A Python基础语法总结:

1.Python标识符

在 Python 里,标识符有字母、数字、下划线组成。

在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。

Python 中的标识符是区分大小写的。

以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;

以双下划线开头的 foo 代表类的私有成员;以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init__() 代表类的构造函数。

2.Python有五个标准的数据类型

Numbers(数字)

String(字符串)

List(列表)

Tuple(元组)

Dictionary(字典)

Python支持四种不同的数字类型:

int(有符号整型)

long(长整型[也可以代表八进制和十六进制])

float(浮点型)

complex(复数)

python的字串列表有2种取值顺序:

从左到右索引默认0开始的,最大范围是字符串长度少1

从右到左索引默认-1开始的,最大范围是字符串开头

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

列表用 [ ] 标识,是 python 最通用的复合数据类型。

列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

加号 + 是列表连接运算符,星号 * 是重复操作。

元组是另一个数据类型,类似于List(列表)。

元组用”()”标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。

列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用” ”标识。字典由索引(key)和它对应的值value组成。

3.Python数据类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数 描述

int(x [,base])

将x转换为一个整数

long(x [,base] )

将x转换为一个长整数

float(x)

将x转换到一个浮点数

complex(real [,imag])

创建一个复数

str(x)

将对象 x 转换为字符串

repr(x)

将对象 x 转换为表达式字符串

eval(str)

用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s)

将序列 s 转换为一个元组

list(s)

将序列 s 转换为一个列表

set(s)

转换为可变集合

dict(d)

创建一个字典。d 必须是一个序列 (key,value)元组。

frozenset(s)

转换为不可变集合

chr(x)

将一个整数转换为一个字符

unichr(x)

将一个整数转换为Unicode字符

ord(x)

将一个字符转换为它的整数值

hex(x)

将一个整数转换为一个十六进制字符串

oct(x)

将一个整数转换为一个八进制字符串

4.Python 运算符

算术运算符

比较(关系)运算符

赋值运算符

逻辑运算符

位运算符

成员运算符

身份运算符

运算符优先级

python算术运算符

运算符 描述 实例

加 - 两个对象相加 a + b 输出结果 30

减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10

乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200

/ 除 - x除以y b / a 输出结果 2

% 取模 - 返回除法的余数 b % a 输出结果 0

幂 - 返回x的y次幂 ab 为10的20次方, 输出结果 100000000000000000000

// 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

①:python比较运算符

以下假设变量a为10,变量b为20:

运算符 描述 实例

== 等于 - 比较对象是否相等 (a == b) 返回 False。

!= 不等于 - 比较两个对象是否不相等 (a != b) 返回 true.

<> 不等于 - 比较两个对象是否不相等 (a <> b) 返回 true。这个运算符类似 != 。

大于 - 返回x是否大于y (a > b) 返回 False。

< 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 (a < b) 返回 true。

= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。

<= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 true。

②:Python赋值运算符

以下假设变量a为10,变量b为20:

运算符 描述 实例

= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c

+= 加法赋值运算符 c += a 等效于 c = c + a

-= 减法赋值运算符 c -= a 等效于 c = c - a

= 乘法赋值运算符 c = a 等效于 c = c * a

/= 除法赋值运算符 c /= a 等效于 c = c / a

%= 取模赋值运算符 c %= a 等效于 c = c % a

= 幂赋值运算符 c = a 等效于 c = c ** a

//= 取整除赋值运算符 c //= a 等效于 c = c // a

③:Python位运算符

下表中变量 a 为 60,b 为 13,二进制格式如下:

a = 0011 1100

b = 0000 1101

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a = 1100 0011

运算符 描述 实例

& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100

| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101

^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001

~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。

<< 左移动运算符:运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000

右移动运算符:把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111

④:Python逻辑运算符

Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:

运算符 逻辑表达式 描述 实例

and x and y 布尔”与” - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。

or x or y 布尔”或” - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。

not not x 布尔”非” - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False

⑤:Python成员运算符

除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

运算符 描述 实例

in 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

⑥:Python身份运算符

身份运算符用于比较两个对象的存储单元

运算符 描述 实例

is is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False

is not is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

# 数据类型

print(0xff00);  # 十六进制用0x前缀和0-9,a-f表示

print(1.23e9);  # 对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

# 在Python中,可以直接用True、False表示布尔值(请注意大小写)布尔值可以用and、or和not运算。

# 空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

# ----------------------------------------

# print语句

print('hello, world')

print('The quick brown fox', 'jumps over', 'the lazy dog') # 遇到逗号“,”会输出一个空格

print('100 + 200 =', 100 + 200)  # 计算100 + 200的结果

# --------------------------------------------

# 变量

a = 1  # 变量是用一个变量名表示,变量名必须是大小写英文、数字和_的组合,且不能用数字开头

# 可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,称为动态语言

# -------------------------------------------

# 可以使用转义字符 \ 、\n、\t等等

# -------------------------------------------

# raw字符串与多行字符串

print(r'\(~_~)/ \(~_~)/');  # 我们可以在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了

# 但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串

# 如果要表示多行字符串,可以用'''...'''表示

print('''Python is created by "Guido".

It is free and easy to learn.Let's start learn Python in imooc!''');  # 等同于'Line 1\nLine 2\nLine 3'

# ---------------------------------------------------

# Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:

print(u'中文')

#---------------------------------------------------

#布尔类型

a = True

print( a and 'a=T' or 'a=F',a)

a and 'a=T'

#计算结果不是布尔类型,而是字符串 'a=T',这是为什么呢?

#因为Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True,所以:

a and 'a=T' #计算结果是 'a=T'

print( a and 'a=T' or 'a=F') #计算结果还是 'a=T'

# 创建tuple

# tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。

t = ('Adam', 'Lisa', 'Bart')  # 创建tuple和创建list唯一不同之处是用( )替代了[ ]

print(t)

# list是一种有序的集合,可以随时添加和删除其中的元素

L = ['Adam', 95.5, 'Lisa', 85, 'Bart', 59]

# 按照索引访问list

# 输出Bart,下标是从0开始

print(L[4])

# 倒序访问list

# 输出Bart,下标是从0开始

print(L[-2])

# dict的特点

# dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样(而list的查找速度随着元素增加而逐渐下降。不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。)

# 由于dict是按 key 查找,所以,在一个dict中,key不能重复。

# dict的第二个特点就是存储的key-value序对是没有顺序的

# dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key

d = 'Adam': 95, 'Lisa': 85, 'Bart': 59

# 更新dict

d['Paul'] = 72  # 如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value

# 遍历dict

for i in d:

    print(i,':',d[i])

# ---------------------------------------------------

# set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。

# 创建

s = set(['A', 'B', 'C'])

# 遍历

#更新set

s.add(4) #元素已经存在于set中,add()不会报错,但是不会加进去了

s.remove(4) #元素不存在set中,remove()会报错,所以remove()前需要判断。

for name in s:

print(name)

Python从入门到PY交易,基础语法,散记

类的继承:

类本身进一步细分成子类的过程,称为继承,比如鸟类是属于动物类,鸟类是动物类的子类
子类拥有父类的所有属性
1.继承的基本格式

class 类名(父类名):
属性
方法 :
方法体

2.范例:
python2
3.父类默认为object
4.类的特殊用法:
每个类中的方法中都有self参数,在方法内部调用自身的属性或方法
构造方法init(),实例化对象的时候自动调用,一般做初始化

容器container:

能存储多个元素的对象称为容器,如列表,词典
字典{} 唯一的映射类型,对象可变,键必须使用不可变对象,可以使用不同类型的键值
1. 词典:key:value,{}:

c = {“id“:100,”name“:”wuxunjie”,””age””:22}

通过key就可以修改value , key是无法改变
如 c[“id”] = 20
2. 通过对新的key赋值往词典中加入一个新的键值对
添加 dic[‘tel’]=’12345678’ 会随机插入字典之中,因为字典是无序的
3. 词典常用方法
dic.keys():得到所有的key
del dci[‘tel’] 删除dci字典中的tel元素
dic.clear 清空字典
del(dic)删除字典

Python中的文本文件的操作

具有最基本的文本文件读写功能
1.创建文件对象
f = open(“文本文件”)
2.读取:

str = f.read(N) #读取N bytes的数据
Str = f.radline() #读取一行
Str = f.readlines() #读取所有行

3.写入:
F.write(‘写入的内容’) #将所需内容写入文件之中
4.关闭:
F.close()

Python中的模块结构

模块是为了更好的组织已经有的程序,以方便重复利用
在python中一个.py文件就构成一个模块。可以调用其他文件中的程序
1.引入模块
定义一个模块1,实现一个办法
在模块2中通过import导入模块1,不加.py后缀
在模块2中通过 模块.对象 即可调用
2.其他引入方式:

Import a as b # 引入模块a,并命名为b
from a import b # 从模块a中引入b对象。调用时可不说明
from a import * # 从模块 a中引入所有对象,调用时都不用说明

3.可以将模块放在同一个文件夹中,构成一个模块包,此包必须包含一个init.py的文件
引入模块包:import 包名.module

Python中特殊的参数传递

1.可以根据名称来传递
python3
2.可以规定默认值,但必须得从左到右一一对应
4
3.多个参数的传递,定义函数时参数前面加*
5
4.传递字典需要加**,也可以用解包的方式传递参数
这里写图片描述

Python中循环相关的常用函数

1.Range函数,可以构造列表
这里写图片描述
输出结果:
a c e g i k
2.enumerate():可以在每次循环中同时得到下标和元素
这里写图片描述
输出结果:
这里写图片描述
3.zip():可以在一次循环中从各个序列中分别取出一个元素,并行遍历
这里写图片描述
输出结果:
这里写图片描述
4.取最大值 max()
5.取最小值 min()
6.长度 len()
7.取商和模 divmod()
8.求次方 pow()
9.浮点数 round()
10.cmp() 比较两个字符串
11.String函数
字符串.capitalize() 把字符串首字母变成大写
str.replace(old,new,替换次数) 替换
str.split(标记,次数) 切割

Python中的函数对象

在python中函数也是对象,可以赋值给其他对象名,或者作为参数传递
1.Lambda表达式
一种快速定义单行的最小函数,是从lisp借用来的,可以用在任何需要函数的地方

>
g = lambda x,y:x*y
g(2,3)

输出:6
这里写图片描述
输出:18
2.map(函数,列表):是python的内置函数,把每个参数都带入lambda中运算
这里写图片描述
输出:
这里写图片描述
3.filter(函数,列表):过滤,会把函数中得到true的结果过滤出来
这里写图片描述
输出:
这里写图片描述
4.reduce():reduce逐次操作list里的每项,接受的参数的数目为2,一般用于递归运算
reduce(lambda x,y:x+y,rang(1,101)) #递归加法

l = range(1,6)
def f(x,y)
    return x*y

reduce(f,l)

输出:
120
范例2:
这里写图片描述
输出:92

正则表达式(RE)

小型的,高度专业化的编程语言。内嵌在python中,用过re模块实现
可以为想要匹配的相应字符串集指定规则
该字符串集可能包含英文语句,e-mail地址,命令或任何你想搞定的东西
以各种方式来修改或分割字符串

Python中的异常处理

范例:

tryexcept exception1:
elsefinally

如果本层次中没有捕获异常,则向上抛出

Python中数学库的使用

Python中有很多内建函数库:
飞机票:http://python.usyiyi.cn/python_343/library/functions.html
1.math主要处理数学相关的运算
math.e # 自然常数e
math.pi # 圆周率pi

python在数据挖掘方面的优势

R做文件挖掘还是有点弱,但是已经封装好,类似一种软件
Python函数比R多,比R快
1.python标准库
2.Numpy与scipy:常用的数学操作
3.Matplotlib:数据可视化
4.符号运算的库:sympy和theano
5.Scikit learn:封装了几乎所有的经典算法

Python中配置安装easy_install和pip,插件管理工具,类似redhat中的yum

1.配置python环境变量
2.配置python script环境变量
3.下载setuptools,解压缩到任意目录下
4.进入上面那个目录
5.Python setup.py install
6.验证 easy_install –showhelp
7.easy_install 常用命令
easy_install 安装包
-U 更新
-m 删除库
8.Pip的安装类似于easy_install
pip install 安装包
9.如果出现ascii相关的异常
修改python安装路径下lib\\mimetype.py文件,在import下添加如下几行:

If sys.getdefaultencoding( ) != ‘gbk’ ;
Reload(sys)
Sys.setfefaultencoding( ‘gbk’)

Python中配置安装numpy,一个开源的数字拓展,可以用来处理存储和大型矩阵

可用easy_install 和pip安装
或者下载exe格式的安装包
或者源码安装

基础练习:
计算器

#!/usr/bin/python
#coding:utf-8
from _future_ import division

def add (x,y)
    return x+y
def minu (x,y)
    return x-y
def cheng (x,y)
    return x*y
def divid (x,y)
    return x/y

#def operator(x,o,y)
#   if o == "+":
#       add (x,y)
#   elif o == "-":
#       minu (x,y)
#   elif o == "*":
#       cheng (x,y)
#   elif o == "/":
#       divid (x,y)

operator = {"+":add,"-":minu,"*":cheng,"/":divid}
def f(x,o,y):
    print operator.get(o)(x,y)

调用f(3,”+”,2)
输出:5

以上是关于py基本语法的主要内容,如果未能解决你的问题,请参考以下文章

[PY3]——基本语法

正则表达式的概念和基本语法

python学习之路(基础篇)——基本语法流程控制

Python基本语法

python第一周 基本语法原理

cxxTestgen.py 抛出语法错误