python 编程起步基础-笔记

版权声明:©懂你科技(https://dongni.net/) https://blog.csdn.net/u011087213/article/details/84725292

简介:

官网:https://www.python.org/

python是一款易学的通用、动态且高阶的语言

python能够很好地与其它语言交互,也被成为胶水语言

python已经成为一门强大的数据分析语言

 

python主要的缺点是性能不高

python是一款解释型语言,与R、Ruby、Matlab相似,而与C、C++、Java这些编译型语言差别较大

python用户信奉“过早优化是万恶之源”(is the root of all evil)

 

反驳针对python性能的批评

开发时间(开发者编写程序的时间)比程序运行时间更宝贵

大部分性能相关的问题都能通过使用合适的数据结构和算法来解决

如果确实需要关注性能,可以用编译型语言编写性能瓶颈,然后在python中调用相关函数

正文:

1.运行python

2.注释

3.变量

4.特殊变量

5.操作符

6.字符串

7.模块

 

1、运行python

python本身是一种被称为解释器的特殊程序,这个程序将python源代码转换成计算机处理器可以理解的指令。

python解释器有多种启动方式

命令行(Mac/Linux/Windows):

最基本的方式是在终端的提示符(prompt)中输入python,通常会显示一些关于python自身的信息,接下来是以“>>>”起始的行,这是python提示符,在此可以输入python代码

输入相关代码,按回车键执行,最后回到“>>>”提示符中

 

若想获得帮助,可以随时使用help()函数,而用exit()函数可以回到命令行。这种方式与bash很像,因为python的交互方式与bash完全相同,都是“读取-运算-输入”循环(read-eval print loop),简称REPL

 

命令行-ipython:

ipython(interactive python)提供了更强大的REPL

http://ipython.org/

pip install ipython

启动会默认跟随python主版本,如果版本不对,可以uninstall之后再重新安装

Mac 更改默认python版本

~ alias python

alias python='python3.7

提供了基本web浏览器的notebook,其使用方式和外观与Mathematica或Matlab的notebook非常相似。这些noteboot都是非常好的数据分析平台,且正在快速成为创建和分享信息的标准方式

缺点:

REPL在使用多行代码时比较难、繁琐且容易出错

很难讲代码保存到普通文件中

 

在线shell:

https://www.python.org/shell/

 

下载的个平台客户端:

https://www.python.org/downloads/

 

py文件:

大部分人一般在文本文件中编写python代码。如果对一.py结尾的文件运行解释器,python会执行其中所有的代码,就如同在REPL中逐行执行一样

2、注释

注释字符会让解释器忽略一部分字符,让开发者能够在相关代码附近撰写一些说明或解释

python使用“#”字符表示注释内容

解释器会忽略掉“#”之后位于同一行的所有内容

python没有多行注释

通常为了能够更好地显示中文注释,需要在第一行非注释之前加入如下:

#/bin/env python

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

 

3、变量

变量由两部分组成:名称和值

若想为一个名称给定一个值,需要用到单个等号(=),将变量的名称放在等号的左边,值放在右边

变量的名字可由大小写字母、数字(0-9)、下划线(_)组成,不能以数字开头

 

在python中,所有变量都有确定的类型,这意味着这些值具有明确定义的属性,用于指定其使用方式

各种类型有针对特定用途的专门属性:

整数(int)和浮点数(float)用于数学计算

字符串(str)用于文本处理

 

整数和字符串有时称为精确类型,因为所有精确类型的变量都能在底层精确表示,但浮点数是不精确类型

 

使用 type() 函数查看变量类型,将需要检查的变量放在括号中即可

In [27]: a=1

In [28]: b='1'

In [31]: type(a)

Out[31]: int

In [32]: type(b)

Out[32]: str

 

使用类型名称来转换变量类型

首先输入类型名称,在其后跟上括号,括号里面是需要转换的变量

17:22:01 ~ ipython

Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 03:13:28)

Type 'copyright', 'credits' or 'license' for more information

IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.

 

In [1]: float(42)

Out[1]: 42.0

 

In [2]: int("28")

Out[2]: 28

 

In [3]:

 

错误说明:

In [3]: int("python")

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<ipython-input-3-9ae652162590> in <module>

----> 1 int("python")

 

ValueError: invalid literal for int() with base 10: 'python'

 

In [4]:

产生了一个值错误(ValueError)

错误的位置(指出是在文件中还是在交互式解释器中)

发生错误位置的行号,以及偏移量

最重要的错误消息

 

这是python标准的处理模式,能激发开发者的探索和创造能力。如果某个操作无法进行下去,那么代码应尽早报错并返回有用的错误消息

 

python是动态类型的,这意味着以下几点:

类型是关联到变量的值上,而不是关联到变量的名称上

在使用某个变量之前,不需要知道该变量的类型

改变变量的值后,变量名称的类型就随之改变

 

eg:

In [4]: x=3

 

In [5]: type(x)

Out[5]: int

 

In [6]: x=3.0

 

In [7]: type(x)

Out[7]: float

 

In [8]: x='3'

 

In [9]: type(x)

Out[9]: str

 

In [10]:

每次在向 x 赋予新值时,都改变了其类型。新值替换了旧值,但变量名称没有改变。这与静态类型语言,如C、C++、Java等都有所区别,在哪些语言中:

类型关联到变量的名称上,而不是变量的值

在使用变量之前必须指定其类型(通过声明或推导)

无法改变变量类型,即使改变变量的值也不行

python中的许多语言特性是为了减少在使用低阶语言时会遇到的不便之处。python对低阶语言中一些严格的限制进行了抽象。而python的这种灵活性也伴随了一些折中(折衷)

 

4、特殊变量

python有一些重要的特殊变量,这些变量的值已经内置到语言中,如True、False、None、NotImplemented,这些变量在启动python解释器时就存在,且只初始化一次,因此都是单例模式

 

布尔值

布尔类型只含有 True 和 False 这两个变量,在python中类型为bool

布尔变量用来表示 python 表达式的真假值

开发者也可以直接作为标志使用,表示开启或关闭某个行为

其他数据类型也可以转换成布尔值

一般来说,如果值是 0 或容器为空,转换为False;如果值非0或者容器非空,则转换为True

eg:

In [12]: bool(0)

Out[12]: False

 

In [13]: bool(1)

Out[13]: True

 

In [14]: bool(0.1)

Out[14]: True

 

In [15]: bool(None)

Out[15]: False

 

In [16]: bool(NotImplemented)

Out[16]: True

 

In [17]: bool('python')

Out[17]: True

 

In [18]: bool('')

Out[18]: False

 

In [19]: bool('None')

Out[19]: True

 

In [20]: bool('NotImplemented')

Out[20]: True

 

None 不是 0

None在python中是一个特殊的变量,用来表示没有给定值,或没有定义行为。这与使用0、空字符串或其他任何控制都不同。

0 是一个合法的数字,而 None 不是

如果在一个程序中需要一个整数或浮点数,但传进去的是 None 则程序会终止。如果传入的是 0,程序会继续进行

None 就如同C/C++的 NULL、JavaScript的null一样

None 在python中还有特殊的地位,用来表示函数默认的返回值

 

NotImplemented 不是 None

与 None 不同,变量 NotImplemented 不仅用来表示某个行为尚未定义,同时也表示该行为在python中不可能完成、没有意义或不存在

In [21]: 'python' / 3.7

---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-21-d8d0a20e8437> in <module>

----> 1 'python' / 3.7

 

TypeError: unsupported operand type(s) for /: 'str' and 'float'

 

5、操作符

操作符是一种python语法,用于表示一些常见的处理数据和变量的方法

python定义了一元(unary)、二元(binary)和三元(ternary)这三种操作符,分别对应以1个、2个、3个变量作为参数的操作符

 

python操作符(以变量x/y/x说明)

名称

使用方式

返回值

一元操作符

 

 

正号

+x

用于数值类型,返回x

负号

-x

用于数值类型,返回-x

否定

not x

逻辑取反,True转换成False,反之亦然

位取反

~x

将x的二进制形式按位取反

删除

 del x

删除变量x

调用

x()

返回调用x的结果

断言

assert x

检查bool(x)的值是否为True

二元操作符

 

 

赋值

x = y

将名称 x 的值设为 y

访问属性

x.y

获取 x 中的值 y

删除属性

del x.y

从 x 中移除 y

索引

x[y]

获取 x 中位于 y 位置的值

删除索引

del x[y]

删除 x 中位于 y 位置的值

逻辑与

x and y

如果bool(x) 和 bool(y) 都为 True,则返回 True,反之返回 False

逻辑或

x or y

如果 bool(x) 为 True,则结果为x,反之为 y

二元算术运算符

 

 

加法

x + y

减法

x - y

乘法

x * y

除法

x / y

商,在python2中只含有整数部分,在python3中还包括小数部分

地板除

x // y

求除法中的商

取模

x % y

求出发中的余数

取模

x ** y

x 的 y 次方

按位与

x & y

逐位比较 x 和 y 的二进制形式,两者都为 1,则该位为 1,否则该位为 0

按位或

x | y

逐位比较 x 和 y 的二进制形式,只要其中有一个是1,则该位为1,否则该位为0

按位异或

x ^ t

逐位比较 x 和 y 的二进制形式,其中有且只一个是 1,则该位为1,否则该位为0

向左位移

x << y

将 x 的二进制形式向左移动 y 位,对于整数相当于 x 乘以 2y

向右位移

x >> y

将 x 的二进制形式向右移动 y 位,对于整数相当于 x 除以 2y

原地操作

x op= y

op 可以相当于上面所有的操作,op=相当于原地操作,意味着直接在 x 上进行操作,结果也直接应用到 x 上

二元比较运算符

 

 

等于

x == y

True 或 False

不等于

x != y

True 或 False

小于

x < y

True 或 False

小于等于

x <= y

True 或 False

大于

x > y

True 或 False

大于等于

x >= y

True 或 False

包含

x in y

如果 x 是 y 中的一个元素则为 True,反之为 False

不包含

x not in y

如果 x 是 y 中的一个元素则为 False,反之为 True

等价性测试

x is y

如果 x 和 y 指向同一个底层值,则为 True,反之为 False

非等价测试

x is not y

如果 x 和 y 指向同一个底层值,则为 False,反之为 True

三元运算符

 

 

三元赋值

x = y = z

将 x  和 y 的值设为 z

属性赋值

x.y = z

将 x.y 的值设为 z

索引属性

x[y] = z

将 x 中 y 位置的值设为 z

三元比较

x < y < z

True 或 False,等价于(x < y) and (y < z),这里的 < 可以替换为 >、<=、>=

三元或

x if y else z

如果 bool(y) 为 True,则结果为 x,反之为 z,等价于 C/C++中的 y?x:z

 

上表中列出的大多数操作符都可以互相组合,也就是说操作符之间可以互相连接、嵌套、用括号规定运算顺序,这与组合数学运算符完全相同

但有些特定类型的操作符(如赋值(=)和删除(del)操作符)不能组合,必须位于单独一行,因为这些操作符会直接修改变量本身,而不是修改变量的值

如果某个操作符是可组合的,则可以用其组成python表达式,表达式是一段代码,执行时并不需要独占一行

同一行代码可以有多个表达式

另一方面,如果某个操作符不可组合,且需要独占一行才能工作,则称为语句

从本质上说,所有的python代码都由一系列语句组成,而语句由表达式组成

 

 

未完待续

猜你喜欢

转载自blog.csdn.net/u011087213/article/details/84725292
今日推荐