python中常用的语法_Python常用语法看这些就够了(上篇)

参考教程:菜鸟教程

使用的开发工具是Jupyter Notebook(Anaconda)

下面我主要是介绍一些需要注意的点和练习过程:

说在前面:动手很重要

一、python基本语法

1.标识符规则:

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

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

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

注意:

以下划线开头的标识符是有特殊意义的。

以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。

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

2.行和缩进

python中的代码块不适应大括号{ } 来控制类、函数以及其他逻辑判断。python对缩进是很敏感的,它通过缩进来判断函数或者模块。

if True:

print("true")

else:

print("false")

若出现: IndentationError: unindent does not match any outer indentation level错误表明是缩进错误

3.多行语句在行尾使用 \ 来接下一行

20191102220238457.png

句中包含 [], {} 或 () 括号就不需要使用多行连接符。

4.字符串表示 ‘’,“”,“““,三引号可以由多行组成。单行注释用 # 多行注释用三个单引号或三个双引号。

5.input、print表示输入、输出,python中的命令-h可以查看各参数的帮助信息。

6.import 与 from...import

20191102220238180.png

二、Python变量类型

1.变量赋值

Python中变量名赋值不需要进行类型声明,变量名也不需要提前创建,变量赋值以后才会被创建(这一点和R语言类似)

2.多变量赋值

可以同时给三个变量赋相同的值,也可以将三个变量同时分别赋值。

20191102220316205.png

20191102220316214.png

3.标准数据类型

Python中有五个标准数据类型:Numbers(数字)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)

详细内容看下面的第九条

三、Python的基本数据类型

用于存储数据

1.Number数字

Python3 支持 int、float、bool、complex(复数)。

(1)内置的 type() 函数可以用来查询变量所指的对象类型。

(2)此外还可以用 isinstance 来判断

(1)(2)的区别在于:

2019110222034211.png

(3)Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。

(4)del语句可以删除一些对象引用。也可以删除单个或多个对象。

(5)Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

2.字符串

Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。

(1)字符串截取:

变量[头下标:尾下标],字符串第一个字符索引是0;

从左往右以0开始,从右往左以-1开始。

(2)字符串操作

20191102220355825.png

注意不能使用索引来改变字符串内的字符。

(3)对转义字符的说明

反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串:

20191102220413302.png

3.列表List(Python内还有一些对列表操作的函数)

(1)列表是写在方括号 [] 之间、用逗号分隔开的元素列表, 列表中元素的类型可以不相同。

20191102220426586.png

(2)列表中元素的截取

20191102220426892.png

①当只截取一个时,返回值是这个元素;当截取多个时,返回的是一个新的列表。

20191102220426898.png

②注意选取范围是左闭右开区间

索引值以 0 为开始值,-1 为从末尾的开始位置。

可以直接通过索引来更改列表内元素,也可以通过列表内置方法来更改。

③注意:

list可以用+进行拼接

和字符串一样,list可以被索引和切片

python截取列表数据时,可以接收第三个参数,实现按步数截取。

当第三个参数为负数时逆向读取,可以用来翻转字符串。

20191102220443282.png

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

4.元组Tuple

(1)特点:操作元组与列表类似,不同之处在于,元组内的元组不能修改,元组写在小括号()里,元组之间用逗号隔开,元组内的元组类型也可以不同。元组之间也可以通过+直接合并。

(2)虽然tuple的元素不可变,但是他可以包含可变的对象,比如说list列表。

(3)特别注意:构造包含0或1个元素的元组有着特殊的语法规则

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

5.集合set

是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。

基本功能是进行成员关系测试和删除重复元素。set里的内容位置是随意的,所以不能用索引列出

(1)set的创建

①可以使用大括号{}或者set()函数来创建

②在用set函数的时候,注意,set函数最多只能接收一个参数

那么怎样用它来创建含有多个元素的集合呢?

向set函数的参数里,传入含有多个元素的列表或元组均可;如果只传入一个字符串,他会将字符串拆成一个个的字符,那么创建的集合就全是一个个的字母的集合啦

③空的集合必须通过set()函数来创建;{}是用来创建空的字典的。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

(2)集合之间可以进行运算,差、交、并、补等

(3)set的使用:

①去重,set自动完成

②判断元素是否在集合中

6.字典dictionary(具体字典内置函数,可以百度一下)

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

(1)字典的实质:字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。

(2)注意: 键(key)必须使用不可变类型, 在同一个字典中,键(key)必须是唯一的。

(3)创建字典:三种方式对比

创建空字典用{}。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

(4)对字典的读取操作

20191102220551937.png

2019110222055768.png

7.Python数据转换

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

函数

描述

int(x)

将x转化为一个整数

float(x)

将x转化为浮点数

comlext(real,imag)

创建复数

str(x)

将对象x转化为字符串

repe(x)

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

tuple(s)

将序列s转化为元组

list(s)

将序列s转化为列表

set(s)

将s转化为可变集合

frozenset(s)

转化为不可变集合

dict(d)

将d转化为字典;d必须是一个(key,value)的元组序列

chr(x)

将一个整数转化为字符

ord(x)

将一个字符转化为整数

hex(x)

将x转化为16进制形式字符串

oct(x)

转化为八进制形式字符串

四、Python解释器

现在Python的集成开发工具多种多样,我现在使用的是Jupyter notebook,网页版,高效方便。

也可以使用python自带的IDE,有脚本编程和交互式编程两种。

还有pycharm、Ipython等工具都很方便。

五、Python运算符(这里只讲一些常用的)

1.算术运算符

运算符

描述

+,-,*,/

加减乘除

%

取模,返回除法的余数

x**y

返回x的y次方结果

//

向下取接近除数的整数,9//2=4;-5//2=-3;得到的是更小的整数

2.比较运算符(返回的是真值)

运算符

描述

==、!=

等于、不等

>、<、>=、<=

大于、小于、大于等于、小于等于

3.赋值运算符

运算符

描述

=

简单赋值符 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

:=

海象运算符(和R语言中的有点类似)

可在表达式内部为变量赋值。

4.位运算符

运算符

描述

&

按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0

|

按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。

^

按位异或运算符:当两对应的二进位相异时,结果为1

~

按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1

<<

左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

>>

右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数

5.逻辑运算符(看X的真值)

运算符

描述

and

与运算符:如果x为False,x and y 返回 False,否则返回y的计算值

or

或运算符:如果x是True,返回x的值,否则返回y的值

not

非运算符,如果x为True,则返回False,否则返回True

6.成员运算符

in、not in

7.身份运算符(判断)

is 判断两个标识符是否引用自同一个对象

is not 判断两个标识符是否引自不同的对象

8.Python运算符的优先级

"**" > "~ +@ -@" > "*/%//" > "+-" > "<< >>"

注意:python3已经不支持<>(不等)运算符,被!=替代了。

六、Python条件控制

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

1.if判断

(1)小例子:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

(2)if嵌套

if 表达式1:

语句

if 表达式2:

语句

elif 表达式3:

语句

else:

语句

elif 表达式4:

语句

else:

语句

七、Python循环语句

1.while循环语句

while(condition):

statement

例子:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

当条件永真时,会无限循环

当条件不成立时跳出循环,也可以用break来终止循环

20191102221029266.png

2.for循环语句

(1)一般格式

for var in sequence:

statemnet1

else:

statement2

(2)小例子(range函数也可以指定步数,默认是整数 1)

20191102221103861.png

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

3.continue关键字

从例子中就可以看出,continue是执行到该语句时,下面的语句不再执行,继续执行下一个循环过程。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

八、Python 迭代器和生成器

1.迭代器: 可以记住遍历的位置的对象。

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

迭代器有两个基本的方法:iter() 和 next()。

(1)使用Python内置迭代器

例子:

20191102221105810.png

(2)迭代

20191102221123631.png

(3)对自定义的类使用迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法:__iter__(),__next__() ※注意是双下划线!!!!

① __iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 __next__() 方法并通过触发 StopIteration 异常标识迭代的完成(目的就是识别循环结束的情况,防止出现无限循环的情况)。

② __next__() 方法会返回下一个迭代器对象。

③小例子:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

更加合理的指定迭代范围的方式:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

2.生成器generator:生成器就是一个迭代器

(1)定义:使用了yield的函数被称为生成器

调用一个生成器函数,返回的是一个迭代器对象。

(2)生成器的工作流程:

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值(相当于一个断点), 并在下一次执行 next() 方法时从当前位置继续运行。

小例子:使用yield实现斐波那契数列:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

九、Python函数

1.定义一个函数

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。

任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

函数内容以冒号起始,并且缩进。

return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。

2.调用函数

直接使用函数标识符(加需要传递的参数)进行调用

3.参数传递

(1)明确一下Python里的可更改和不可更改对象

string、tuple、number都是不可更改对象;而list、dict是可更改对象

下面的概念好好理解:

不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。

可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

(2)对于不可变类型、可变类型对象在调用函数中作为参数传递:

不可变类型( string、tuple、number等):类似于C++的值传递;如func(a),a传入的只是a的值,并不影响原来a对象本身。比如在函数内部对a的值改变,改变的只是这个对象的复制对象,对象a本身是不变的。

可变类型(list、dict等):类似于C++的引用传递,如func(la),la传入的是这个对象本身,函数内部对这个对象修改后,外部的对象是会被改变的。

4.参数类型

调用参数时可使用的正式参数类型:

必需参数、关键字参数、默认参数、不定长参数

(1)必需参数: 必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

(2)关键字参数: 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

例:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

(3)默认参数

调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:

接上面例子:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlaGVfc29mdF9lbmdpbmVlcg==,size_16,color_FFFFFF,t_70

(4)不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。

①第一种形式:使用加*的参数,表示输入一个元组,这个元组的长度是不定的,由调用函数时,自动读取。

例:

20191102221201224.png

②第二种形式:使用加**的参数,表示输入形式为字典形式,长度不定

例:

20191102221217875.png

5.匿名函数

python 使用 lambda 来创建匿名函数。 lambda的主体是一个表达式,而不是一个代码块。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

(1)语法:注意写lambda表达式时参数部分不要加 [ ] 这个符号只是代表可以省略 ,不然会报错

20191102221218182.png

(2)例:

20191102221218187.png

20191102221218190.png 可以看出,也可以不指定参数

十、Python数据结构

1.列表

2.列表——>堆栈

3. 元组和序列

4.集合

5.字典

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值