本文目录一览:
Python基本语法???
1.Hello World
实例 HelloWorld.py
# !/usr/bin/python3
print(“Hello, World!”);
运行脚本
$python HelloWorld.py
注解:以如上方式运行,第一行无意义;但以./HelloWorld.py的方式运行,第一行则指定python解释器的位置
2.标识符
必须字母或下划线开头
标识符其他部分是字母、下划线和数字
大小写敏感
3.设置编码
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:
# -- coding: cp-1252 --
4.注释
python单行注释以 # 开始,多行注释可以用多个 # 或 ''' 和 """
例子
#!/usr/bin/python3
# 注释
# 注释
'''
注释
注释
'''
"""
注释
注释
"""
print (“Hello, World!”)
4.行和缩进
python使用行缩进代表代码块而不需要({}),同一个代码块的行缩进必须一致,否则报错。
5.多行语句
python如果一个语句过长可以用 \ 实现多行语句。
sum = one + \
two + \
three
6.等待用户输入
执行下面的程序在按回车键后就会等待用户输入:
#!/usr/bin/python3
input(“按下 enter 键退出。”)
用户按下键时,程序将退出。
7.import 与 from…import
在 python 用 import 或者 from…import 来导入相应的模块。
将整个模块(somemodule)导入,格式为:* import somemodule*
从某个模块中导入某个函数,格式为: from somemodule import somefunction
从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemodule import *
py基本语法
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
ab = 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基本语法规则有哪些?
Python基本语法
Python的语法相对比C,C++,Java更加简洁,比较符合人的正常思维。本篇介绍Python的基本语法,通过本篇文章你可以学到以下内容。
掌握Python的基本语法
识别Python中的关键字
Python是一门脚本语言,有以下特点:
面向对象:类
语法块:使用缩进进行标记
注释: #单行注释,"""多行注释""",'''我也是多行注释''
打印与输出:print(), input()
变量: 变量在赋值的时候确定变量的类型
模块:通过import 模块名进行加载模块
Python的标识符
标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。标识符通常由字母和数字以及其它字符构成。
标识符的命名遵循以下规定:
开头以字母或者下划线_,剩下的字符数字字母或者下划线
Python遵循小驼峰命名法
不是使用Python中的关键字进行命名
代码示例:
num = 10 # 这是一个int类型变量
错误命名示例:
123rate(数字开头)、 mac book pro(含有空格),class(关键字)
Python关键字
以下列表中的关键字不可以当做标识符进行使用。Python语言的关键字只包含小写字母。
python的基本语法是什么?
语法规则,条件语句、循环语句、方法、类那些。基本内数据类型,Python是弱类型需要容,但还是有类型的,这些类型的特点及操作。内置库API的使用,比如sqlite、网络请求库、json等。
Python由荷兰数学和计算机科学研究学会的Guido van Rossum于1990 年代初设计,作为一门叫做ABC语言的替代品。
Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。 Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
2021年10月,语言流行指数的编译器Tiobe将Python加冕为最受欢迎的编程语言,20年来首次将其置于Java、C和JavaScript之上。
万字干货,Python语法大合集,一篇文章带你入门
这份资料非常纯粹,只有Python的基础语法,专门针对想要学习Python的小白。
Python中用#表示单行注释,#之后的同行的内容都会被注释掉。
使用三个连续的双引号表示多行注释,两个多行注释标识之间内容会被视作是注释。
Python当中的数字定义和其他语言一样:
我们分别使用+, -, *, /表示加减乘除四则运算符。
这里要注意的是,在Python2当中,10/3这个操作会得到3,而不是3.33333。因为除数和被除数都是整数,所以Python会自动执行整数的计算,帮我们把得到的商取整。如果是10.0 / 3,就会得到3.33333。目前Python2已经不再维护了,可以不用关心其中的细节。
但问题是Python是一个 弱类型 的语言,如果我们在一个函数当中得到两个变量,是无法直接判断它们的类型的。这就导致了同样的计算符可能会得到不同的结果,这非常蛋疼。以至于程序员在运算除法的时候,往往都需要手工加上类型转化符,将被除数转成浮点数。
在Python3当中拨乱反正,修正了这个问题,即使是两个整数相除,并且可以整除的情况下,得到的结果也一定是浮点数。
如果我们想要得到整数,我们可以这么操作:
两个除号表示 取整除 ,Python会为我们保留去除余数的结果。
除了取整除操作之外还有取余数操作,数学上称为取模,Python中用%表示。
Python中支持 乘方运算 ,我们可以不用调用额外的函数,而使用**符号来完成:
当运算比较复杂的时候,我们可以用括号来强制改变运算顺序。
Python中用首字母大写的True和False表示真和假。
用and表示与操作,or表示或操作,not表示非操作。而不是C++或者是Java当中的, || 和!。
在Python底层, True和False其实是1和0 ,所以如果我们执行以下操作,是不会报错的,但是在逻辑上毫无意义。
我们用==判断相等的操作,可以看出来True==1, False == 0.
我们要小心Python当中的bool()这个函数,它并不是转成bool类型的意思。如果我们执行这个函数,那么 只有0会被视作是False,其他所有数值都是True :
Python中用==判断相等,表示大于,=表示大于等于, 表示小于,=表示小于等于,!=表示不等。
我们可以用and和or拼装各个逻辑运算:
注意not,and,or之间的优先级,其中not and or。如果分不清楚的话,可以用括号强行改变运行顺序。
关于list的判断,我们常用的判断有两种,一种是刚才介绍的==,还有一种是is。我们有时候也会简单实用is来判断,那么这两者有什么区别呢?我们来看下面的例子:
Python是全引用的语言,其中的对象都使用引用来表示。is判断的就是 两个引用是否指向同一个对象 ,而==则是判断两个引用指向的具体内容是否相等。举个例子,如果我们把引用比喻成地址的话,is就是判断两个变量的是否指向同一个地址,比如说都是沿河东路XX号。而==则是判断这两个地址的收件人是否都叫张三。
显然,住在同一个地址的人一定都叫张三,但是住在不同地址的两个人也可以都叫张三,也可以叫不同的名字。所以如果a is b,那么a == b一定成立,反之则不然。
Python当中对字符串的限制比较松, 双引号和单引号都可以表示字符串 ,看个人喜好使用单引号或者是双引号。我个人比较喜欢单引号,因为写起来方便。
字符串也支持+操作,表示两个字符串相连。除此之外,我们把两个字符串写在一起,即使没有+,Python也会为我们拼接:
我们可以使用[]来查找字符串当中某个位置的字符,用 len 来计算字符串的长度。
我们可以在字符串前面 加上f表示格式操作 ,并且在格式操作当中也支持运算,比如可以嵌套上len函数等。不过要注意,只有Python3.6以上的版本支持f操作。
最后是None的判断,在Python当中None也是一个对象, 所有为None的变量都会指向这个对象 。根据我们前面所说的,既然所有的None都指向同一个地址,我们需要判断一个变量是否是None的时候,可以使用is来进行判断,当然用==也是可以的,不过我们通常使用is。
理解了None之后,我们再回到之前介绍过的bool()函数,它的用途其实就是判断值是否是空。所有类型的 默认空值会被返回False ,否则都是True。比如0,"",[], {}, ()等。
除了上面这些值以外的所有值传入都会得到True。
Python当中的标准输入输出是 input和print 。
print会输出一个字符串,如果传入的不是字符串会自动调用__str__方法转成字符串进行输出。 默认输出会自动换行 ,如果想要以不同的字符结尾代替换行,可以传入end参数:
使用input时,Python会在命令行接收一行字符串作为输入。可以在input当中传入字符串,会被当成提示输出:
Python支持 三元表达式 ,但是语法和C++不同,使用if else结构,写成:
上段代码等价于:
Python中用[]表示空的list,我们也可以直接在其中填充元素进行初始化:
使用append和pop可以在list的末尾插入或者删除元素:
list可以通过[]加上下标访问指定位置的元素,如果是负数,则表示 倒序访问 。-1表示最后一个元素,-2表示倒数第二个,以此类推。如果访问的元素超过数组长度,则会出发 IndexError 的错误。
list支持切片操作,所谓的切片则是从原list当中 拷贝 出指定的一段。我们用start: end的格式来获取切片,注意,这是一个 左闭右开区间 。如果留空表示全部获取,我们也可以额外再加入一个参数表示步长,比如[1:5:2]表示从1号位置开始,步长为2获取元素。得到的结果为[1, 3]。如果步长设置成-1则代表反向遍历。
如果我们要指定一段区间倒序,则前面的start和end也需要反过来,例如我想要获取[3: 6]区间的倒序,应该写成[6:3:-1]。
只写一个:,表示全部拷贝,如果用is判断拷贝前后的list会得到False。可以使用del删除指定位置的元素,或者可以使用remove方法。
insert方法可以 指定位置插入元素 ,index方法可以查询某个元素第一次出现的下标。
list可以进行加法运算,两个list相加表示list当中的元素合并。 等价于使用extend 方法:
我们想要判断元素是否在list中出现,可以使用 in关键字 ,通过使用len计算list的长度:
tuple和list非常接近,tuple通过()初始化。和list不同, tuple是不可变对象 。也就是说tuple一旦生成不可以改变。如果我们修改tuple,会引发TypeError异常。
由于小括号是有改变优先级的含义,所以我们定义单个元素的tuple, 末尾必须加上逗号 ,否则会被当成是单个元素:
tuple支持list当中绝大部分操作:
我们可以用多个变量来解压一个tuple:
解释一下这行代码:
我们在b的前面加上了星号, 表示这是一个list 。所以Python会在将其他变量对应上值的情况下,将剩下的元素都赋值给b。
补充一点,tuple本身虽然是不可变的,但是 tuple当中的可变元素是可以改变的 。比如我们有这样一个tuple:
我们虽然不能往a当中添加或者删除元素,但是a当中含有一个list,我们可以改变这个list类型的元素,这并不会触发tuple的异常:
dict也是Python当中经常使用的容器,它等价于C++当中的map,即 存储key和value的键值对 。我们用{}表示一个dict,用:分隔key和value。
对 。我们用{}表示一个dict,用:分隔key和value。
dict的key必须为不可变对象,所以 list、set和dict不可以作为另一个dict的key ,否则会抛出异常:
我们同样用[]查找dict当中的元素,我们传入key,获得value,等价于get方法。
我们可以call dict当中的keys和values方法,获取dict当中的所有key和value的集合,会得到一个list。在Python3.7以下版本当中,返回的结果的顺序可能和插入顺序不同,在Python3.7及以上版本中,Python会保证返回的顺序和插入顺序一致:
我们也可以用in判断一个key是否在dict当中,注意只能判断key。
如果使用[]查找不存在的key,会引发KeyError的异常。如果使用 get方法则不会引起异常,只会得到一个None :
setdefault方法可以 为不存在的key 插入一个value,如果key已经存在,则不会覆盖它:
我们可以使用update方法用另外一个dict来更新当前dict,比如a.update(b)。对于a和b交集的key会被b覆盖,a当中不存在的key会被插入进来:
我们一样可以使用del删除dict当中的元素,同样只能传入key。
Python3.5以上的版本支持使用**来解压一个dict:
set是用来存储 不重复元素 的容器,当中的元素都是不同的,相同的元素会被删除。我们可以通过set(),或者通过{}来进行初始化。注意当我们使用{}的时候,必须要传入数据,否则Python会将它和dict弄混。
set当中的元素也必须是不可变对象,因此list不能传入set。
可以调用add方法为set插入元素:
set还可以被认为是集合,所以它还支持一些集合交叉并补的操作。
set还支持 超集和子集的判断 ,我们可以用大于等于和小于等于号判断一个set是不是另一个的超集或子集:
和dict一样,我们可以使用in判断元素在不在set当中。用copy可以拷贝一个set。
Python当中的判断语句非常简单,并且Python不支持switch,所以即使是多个条件,我们也只能 罗列if-else 。
我们可以用in来循环迭代一个list当中的内容,这也是Python当中基本的循环方式。
如果我们要循环一个范围,可以使用range。range加上一个参数表示从0开始的序列,比如range(10),表示[0, 10)区间内的所有整数:
如果我们传入两个参数,则 代表迭代区间的首尾 。
如果我们传入第三个元素,表示每次 循环变量自增的步长 。
如果使用enumerate函数,可以 同时迭代一个list的下标和元素 :
while循环和C++类似,当条件为True时执行,为false时退出。并且判断条件不需要加上括号:
Python当中使用 try和except捕获异常 ,我们可以在except后面限制异常的类型。如果有多个类型可以写多个except,还可以使用else语句表示其他所有的类型。finally语句内的语法 无论是否会触发异常都必定执行 :
在Python当中我们经常会使用资源,最常见的就是open打开一个文件。我们 打开了文件句柄就一定要关闭 ,但是如果我们手动来编码,经常会忘记执行close操作。并且如果文件异常,还会触发异常。这个时候我们可以使用with语句来代替这部分处理,使用with会 自动在with块执行结束或者是触发异常时关闭打开的资源 。
以下是with的几种用法和功能:
凡是可以使用in语句来迭代的对象都叫做 可迭代对象 ,它和迭代器不是一个含义。这里只有可迭代对象的介绍,想要了解迭代器的具体内容,请移步传送门:
Python——五分钟带你弄懂迭代器与生成器,夯实代码能力
当我们调用dict当中的keys方法的时候,返回的结果就是一个可迭代对象。
我们 不能使用下标来访问 可迭代对象,但我们可以用iter将它转化成迭代器,使用next关键字来获取下一个元素。也可以将它转化成list类型,变成一个list。
使用def关键字来定义函数,我们在传参的时候如果指定函数内的参数名, 可以不按照函数定义的顺序 传参:
可以在参数名之前加上*表示任意长度的参数,参数会被转化成list:
也可以指定任意长度的关键字参数,在参数前加上**表示接受一个dict:
当然我们也可以两个都用上,这样可以接受任何参数:
传入参数的时候我们也可以使用*和**来解压list或者是dict:
Python中的参数 可以返回多个值 :
函数内部定义的变量即使和全局变量重名,也 不会覆盖全局变量的值 。想要在函数内部使用全局变量,需要加上 global 关键字,表示这是一个全局变量:
Python支持 函数式编程 ,我们可以在一个函数内部返回一个函数:
Python中可以使用lambda表示 匿名函数 ,使用:作为分隔,:前面表示匿名函数的参数,:后面的是函数的返回值:
我们还可以将函数作为参数使用map和filter,实现元素的批量处理和过滤。关于Python中map、reduce和filter的使用,具体可以查看之前的文章:
五分钟带你了解map、reduce和filter
我们还可以结合循环和判断语来给list或者是dict进行初始化:
使用 import语句引入一个Python模块 ,我们可以用.来访问模块中的函数或者是类。
我们也可以使用from import的语句,单独引入模块内的函数或者是类,而不再需要写出完整路径。使用from import *可以引入模块内所有内容(不推荐这么干)
可以使用as给模块内的方法或者类起别名:
我们可以使用dir查看我们用的模块的路径:
这么做的原因是如果我们当前的路径下也有一个叫做math的Python文件,那么 会覆盖系统自带的math的模块 。这是尤其需要注意的,不小心会导致很多奇怪的bug。
我们来看一个完整的类,相关的介绍都在注释当中
以上内容的详细介绍之前也有过相关文章,可以查看:
Python—— slots ,property和对象命名规范
下面我们来看看Python当中类的使用:
这里解释一下,实例和对象可以理解成一个概念,实例的英文是instance,对象的英文是object。都是指类经过实例化之后得到的对象。
继承可以让子类 继承父类的变量以及方法 ,并且我们还可以在子类当中指定一些属于自己的特性,并且还可以重写父类的一些方法。一般我们会将不同的类放在不同的文件当中,使用import引入,一样可以实现继承。
我们创建一个蝙蝠类:
我们再创建一个蝙蝠侠的类,同时继承Superhero和Bat:
执行这个类:
我们可以通过yield关键字创建一个生成器,每次我们调用的时候执行到yield关键字处则停止。下次再次调用则还是从yield处开始往下执行:
除了yield之外,我们还可以使用()小括号来生成一个生成器:
关于生成器和迭代器更多的内容,可以查看下面这篇文章:
五分钟带你弄懂迭代器与生成器,夯实代码能力
我们引入functools当中的wraps之后,可以创建一个装饰器。装饰器可以在不修改函数内部代码的前提下,在外面包装一层其他的逻辑:
装饰器之前也有专门的文章详细介绍,可以移步下面的传送门:
一文搞定Python装饰器,看完面试不再慌
不知道有多少小伙伴可以看到结束,原作者的确非常厉害,把Python的基本操作基本上都囊括在里面了。如果都能读懂并且理解的话,那么Python这门语言就算是入门了。
如果你之前就有其他语言的语言基础,我想本文读完应该不用30分钟。当然在30分钟内学会一门语言是不可能的,也不是我所提倡的。但至少通过本文我们可以做到熟悉Python的语法,知道大概有哪些操作,剩下的就要我们亲自去写代码的时候去体会和运用了。
根据我的经验,在学习一门新语言的前期,不停地查阅资料是免不了的。希望本文可以作为你在使用Python时候的查阅文档。
最后,我这里有各种免费的编程类资料,有需要的及时私聊我,回复"学习",分享给大家,正在发放中............