为了对Python有大致的了解,我在这里列出Python与C语言的几点区别,帮助大家更好的理解Python
语言 | C语言 | Python |
---|---|---|
类型 | 解释型高级语言 | 编译型高级语言 |
效率 | 低 | 高 |
特点 | 面向对象 | 面向过程 |
文件类型 | .py | .c |
变量类型 | 无需指定 | 必须指定 |
范围界定 | 利用缩进 | 利用花括号{} |
代码分隔 | 回车 | 分号; |
内存管理 | 自动管理 | 手动管理 |
代码块开始标志 | : | { |
标识符:标识符由字母、数字、下划线组成,不能以数字开头,区分大小写
范围界定:同一代码块语句必须包含相同的缩进空白数量,而不使用花括号{}来界定
字符串表示:可以使用单引号’’、双引号””、三引号””” ””” 三引号可用于多行字符串
注释:单行注释# 多行注释””” ”””
使用print()进行输出,当输出内容中含有变量时可以使用 %变量类型 进行替换
整型 %d
字符串 %s
浮点数 %f
输出内容用单引号’’ 或双引号"" 均可(当输出内容中含有’时,用",当输出内容含有”时,用’)
print('Hello World')
print("Hello World")
str1 = "你好"
str2 = "世界"
print("输出内容为 %s %s" %(str1,str2))
variable = input(“提示文字”) 提示文字为要打印的内容,variable为要将输入值赋值的变量
在Python3中使用input()读取的内容将被视为字符串,若要赋值为数值需要进行强转
type(变量)可以获取变量的类型
variable = input("这里是提示内容,请进行输入:")
print(variable)
print(type(variable))
variable = int(input("这里是提示内容,请进行输入:"))
print(variable)
print(type(variable))
模块是在代码量变得相当大后,将需要重复使用的代码段放在一块,这部分代码可以导入到现有的Python程序中,导入的过程叫做导入import
导入格式如下
import 模块名 as 别名 使用时 别名.XXX 代表导入整个模块
from 模块名 import 方法名 使用时 方法名( )直接调用 代表从模块中导入某个函数(可同时导入多个函数,以逗号分隔)
安装模块: 在命令行中使用命令 pip install 模块名
#方式一
import time
print(time.time())
#方式二
import time as hellotime
print(hellotime.time())
#方式三
from time import time
print(time())
赋值 =
Python允许同时为多个变量赋值,也允许为多个对象指定多个变量
a=b=c=1
d, e, f = 2, 2.2 , "hello"
print(a)
print(b)
print(c)
print(d)
print(e)
print(f)
Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)
type(变量)可以获取变量的类型
Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True == 1、False == 0 会返回 True
数值运算:+ - × %均与C语言相同,在这里仅介绍几个Python特有的运算符
/除会返回浮点数
//除是地板除,会直接舍去小数部分,只留下整数部分
**是乘方
Python中没有++,–运算
print(12/5)
print(12//5)
print(3**2)
str*N 代表字符串str重复N遍(N为整数)
print("Hello World "*3)
字符串中可使用\转义字符,当不想使\发生转义,要在字符串前加上r
print("Hello \nWorld")
print(r"Hello \nWorld")
字符串是不可变类型
不可以对字符串的内容进行二次修改
a = "Change"
a[0]='H'
tup = (1, 2.2, "hello")
print(tup)
print(tup[0])
print(tup[1])
tup[0]= 3
报错是由于元组为不可变类型
两个元组之间可以进行比较
两个元组会从对应位置,从左至右开始比较
tup1 = (12,13,1)
tup2 = (12,13,3)
tup3 = (15,13,3)
print("tup1 > tup2吗 ",tup1 > tup2)
print("tup3 > tup2吗 ",tup3 > tup2)
List是可变类型,元素可以改变
a = [1, 2, 3, 4, 5, 6]
print(a)
a[0]= 9
print(a)
a[3:6]= [1, 2, 3]
print(a)
Python提供增加和删除元素的函数
xxx.append(元素) 在列表最后位置添加元素
xxx.remove(元素) 删除某元素
a = [1, 2, 3, 4, 5, 6]
print(a)
a.append(2.2)
print(a)
a.remove(1)
print(a)
字符串,列表,元组均可以称为序列,有序排列,可以通过下标偏移量访问成员,下标从0开始 XXX[0]
这里介绍一下上面出现的a[3:6]的代码 [:]切片操作符
xxx[m:n] 代表下标从m,到n-1的元素
xxx[-1] 代表最后一个元素
xxx[:] 代表从第一个到最后一个元素
xxx[::-1] 代表倒序,从最后一个元素到第一个元素
a = [1, 2, 3, 4, 5, 6]
print(a[2:4])
print(a[-1])
print(a[:])
print(a[::-1])
Set支持集合运算,Set是一个无需不重复元素集
a = set(['a','b','c','d','e'])
print("a = ",a)
b = {'a','b','f'}
print("b = " ,b)
print("a和b的差集 ",a-b) #计算a和b的差集
print("a和b的并集 ",a|b) #计算a和b的并集
print("a和b的交集 ",a&b) #计算a和b的交集
print("a和b不同时存在的元素 ",a^b) #计算a和b中不同时存在的元素
形式为 {key1:value1,key2: value2}
dict = {'x':1, 'y':2}
print(dict)
print(dict['x'])
dict['z']=3
print(dict)
遍历字典
借助Python中提供的函数
dict.keys()取出字典中所有的key
dict.values()取出字典中所有的key
dict.items()取出字典中所有的key,value
dict = {'x':1, 'y':2}
for each_key in dict.keys():
print('key: ',each_key)
print('----------')
for each_value in dict.values():
print('key: ',each_value)
print('----------')
for key,value in dict.items():
print('key: ',key,'value: ',value)
print('----------')
for item in dict.items():
print('key: ',item[0],'value: ',item[1])
推导式:用于优化简单循环
[表达式 for 临时变量 in 可迭代对象 [if 条件表达式]] if条件表达式可以省略
列表推导式式
#eg.求1到10所有偶数的平方 一般写法
alist = []
for i in range(1,11):
if(i%2==0):
alist.append(i*i)
print(alist)
#eg.求1到10所有偶数的平方 列表推导式写法
blist = [i*i for i in range(1,11) if(i%2==0)]
print(blist)
字典推导式:与列表推导式类似,均可以简化简单循环
#eg.将字典的value均+1 一般写法
dict = {'a':1, 'b':2, 'c':3}
for i in dict.keys():
dict[i]= dict[i]+1
print(dict)
#eg.将字典的value均+1 字典表达式写法
dict = {'a':1, 'b':2, 'c':3}
dict = {i: dict[i]+1 for i in dict.keys()} # i: dict[i]+1 格式是 key : value
print(dict)
隐式类型转换:自动转换,由低数据向较高数据类型转换,如int转换到float
显式类型转换:使用类型转换的内置函数
a = 2.78
b = int(a)
c = str(a)
print('a = ',a, ' 类型为 ',type(a))
print('b = ',b, ' 类型为 ',type(b))
print('c = ',c, ' 类型为 ',type(c))
= 简单的赋值运算符 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
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | X and Y | 若X为False,返回X的值,否则返回Y的值 |
or | X or Y | 若X为True,返回X的值,否则返回Y的值 |
not | not X | 若X为True,返回False,如果X为False,返回True |
x = 10
y = 5
print('x = 10 y = 5, x and y 为',x and y)
print('x = 10 y = 5, x or y 为', x or y)
print('x = 10 y = 5, not x 为', not x)
x = 0 # 0 看作false
print('x = 0 y = 5, not x 为', not x)
in 如果在指定的序列中找到值返回 True,否则返回 False
not in 如果在指定的序列中没有找到值返回 True,否则返回 False
a = [1, 2, 3, 4]
b = 3
c = 6
print('b in a 吗?', b in a)
print('c in a 吗?', c in a)
print('c not in a 吗?', c not in a)
is是判断两个标识符是不是引用自一个对象
x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not是判断两个标识符是不是引用自不同对象
x is not y , 类似 id(x) != id(y)。如果引用的不是同一个对象则返回结果 True,否则返回 False
if 表达式:
代码块
if 表达式:
代码块
elif 表达式:
代码块
else:
代码块
代码块的范围由前面的缩进控制!!!
a = 99
if a>100:
print("a大于100")
elif a<50:
print("a小于50")
else:
print("a大于50,小于100")
Python中仅有for循环与while循环,没有do-while循环,循环中可以结合break,continue,if语句
用法如下:
for 临时变量 in 序列(指字符串,列表,元组):
循环体
for 临时变量 in range(XXX):
循环体
a =[1,2,3,4,5]
for i in a:
print(i)
print('-----------')
for y in range(0,13,2):
print(y)
whlie 表达式:
循环体
i = 0
while i<5:
print(i)
i=i+1
函数的定义
def 函数名称(参数):
函数体
return 需返回的内容
函数的调用
函数名称(参数)
def myfunc():
print('这是我定义的函数')
myfunc()
class 类名():
def __init__(self,参数):
self.xxx = xxx
self.xxxx = xxxx
self.__xxxx = xxxxx #__属性,使得该属性不能被直接修改,只能通过调用方法修改
def 函数(参数):
函数体
init 是 Python 中的特殊“方法”(special method),它用于初始化对象
创建实例时它是最先被调用的函数,并且每次创建实例,它的__init__都会被调用,而且它的第一个参数永远是 self,指向创建的实例本身
pass语句:pass是空语句,是为了保持程序结构的完整性,不做任何事情,一般用做占位语句`
当定义的类为明确其功能时,可以使用pass关键字
class Monster():
def __init__(self,name,hp=100):
self.name = name
self.hp = hp
def run(self):
print('正在移动')
a = Monster('Mike',50)
print(a.name)
print(a.hp)
a.run()
a.name = 'John'
a.hp = 120
print(a.name)
print(a.hp)
class 子类名(父类名):
类的内容
当父类和子类定义同名方法时,子类的调用会覆盖父类同名方法