【Python3学习】走进Python

Python语言的概述

Pyhthon 是 蟒蛇的意思。
python语言的拥有者是 Python Software Foundation(PSF)
RSF是一个非盈利组织,致力于保护Python语言开放、开源和发展。

可以说:
Python语言是一个由编程牛人领导设计开发的编程语言
Python语言是一个有开放、开源精神的编程语言
从应用上讲,Python语言应用于火星探测、搜索引擎、引力波等众多领域

python的环境搭建

在ubuntu里面内置了python的环境,可以在终端中输入命令python2来进入python2的环境,输入python3来进入python3的运行环境。很是方便。

至于window版本,以后再补充。

第一个Python程序

学习编程少不了helloWorld!
所以开始吧!
有三种方式运行Python,第一种方式直接在终端上操作,第二种方式用文件方式执行,第三种用ide集成开发环境运行。

第一种

  1. 在终端输入python3
  2. 写下如下程序:

    myString = 'hello world!'
    print(myString)

clipboard.png

第二种

  1. 在某一个文件中,书写程序。并命名后缀名为.py
  2. 打开终端,见图

clipboard.png

 安装插件

python 都是通过pip命令进行安装的,所以首先安装pip
在终端中输入sudo apt install python-pip安装pip

安装第一个插件

安装科学计算包numpy
只需输入命令pip install numpy就可以了,方便吧。

【Python3学习】走进Python_第1张图片

它提示pip需要更新,所以只要输入pip install update pip即可更新。
【Python3学习】走进Python_第2张图片

另一种安装插件的方法

使用python开发平台(继承软件包)类似于ide,如anaconda

注释

使用#来进行注释单行。
使用\来进行续行,

 无须续行符的情况

1.括号内()  [] {}
2. `'''`三引号下包括的字符串也可以跨行书写。

缩进

在python中,缩进相当重要,他代表着不同的语句块。常用四个空格

python基础

变量

变量用来标识一个对象或者引用一个对象。和其他语言相同。使用变量名,大小写敏感。

常量

python中是没有常量一说的,任何的量都是可以变得。但是我们可以通过一些方法来实现。如创建一个常量类。

关于变量的命名准许你一定的规则:

  1. 必须是字母、数字、下划线和汉字等字符组合。

如:python123 python是一门好语言

  1. 大小写敏感,开头不能是数字,同时不能与python保留字相同。驼峰式命名法。

【注】True和False是首字母大写的,和Java语言不同。

运算符

运算符在运算符有很多种类型。

算数运算符
+ - * / % **(乘方) //(取整)
位运算符
~(取反) &(与) |或 ^异或 <<左移 >>右移
比较运算符
< > <= >= == !=
逻辑运算符
not and or

赋值

=来赋值。
不需要显示的来声明类型,为什么呢?因为python是一种动态的强类型语言。根据值来确定类型。
和其他语言不同的是,python是通过引用的方式来实现赋值。python中所有的赋值都是将一个引用指向相应的内存单元。

增量赋值

如:*= += /= *= %= **= <<= >>= &= |= ^=
他们的实际就是 x += 1等价于 x = x +1

链式赋值

可以使用x = y = 1这样的方式进行赋值,从右向左。

多重赋值

x,y = 3,4这个,运算符,在python中代表着一种元组的数据结构,为了更加清晰,建议加上括号(x,y)=(3,4)

介于python中不同于其他语言的赋值方式,可以使用下面的不同赋值形式来进行两个元素的互换:x,y = y,x当然应该写成(x,y)=(y,x)

更加细致的解释后续再说

数据类型

python是一种动态的强类型语言,分为数字类型(整型、浮点型)布尔类型

Numbers类型

Numbers类型分为四种基本类型int long float complex

int

对于int而言,在python2.2以后的版本,将他扩展到了和计算机内存有关的很大的一个数,不像其他语言会溢出。所以对于int和long已没有本质的区别。

也就是说 在32位机器上面,int的值范围是:2^31 -- 2^31-1
在64位机器上面,int的范围是:2^63 -- 2^63-1
这个数字可是相当大了。

float

对于float类型也就是常说的实数,如5.33
同样float类型可以用科学计数法表示。
在python输入1.2e-2则会输出:

clipboard.png

complex

complex是复数形式。复数分为实部和虚部,虚部必须有j
复数类型,有很多方法。
可以使用复数.real获取实数部分
使用复数.imag获取虚数部分
使用复数.conjugate获取它的共轭复数。

序列类型

序列类型可以分为字符串(String)、列表、元祖

String类型

可以使用' " '''来包裹String,字符串是不可变类型。可以使用[]运算符来进行元素的获取;提供递增索引和递减索引
也就是说正向 0 , 1 , ...
反向: -1 , -2 ,...

关于字符串的操作有切片:
使用[M:N]命令,即可取出M-N的字符,包左不包右。包括N

列表

使用[]表示,中间的元素用,分离,英文为List,可变类型

通过保留字in,来查询一个元素是否在列表中。

元组

“圆”组,“圆”组,必须用圆括号啦,,,()它是不可变类型。

映射类型

用{}表示,里面是一些键值对,s = {'hello':'world'}
获取值通过s['hello']同样是[]操作符。

Python的变量管理

首先每个对象在创建的时候都会有一个身份id,这个id可以使用id()函数来查看.
对于float类型变量来说,它存储的方式就和我们之前说的一样,每创建一个变量就将其指向一个地址.

【Python3学习】走进Python_第3张图片

而为了使运行更加高效,针对于小整数(并无确切范围)和字符串是不可变得,也就是说,只会为相同的数据创建一次.

【Python3学习】走进Python_第4张图片

可以说明一切

clipboard.png

对于一些较大的整数还是会按正常方式创建

函数

函数分为内建函数和非内建函数,内建函数可以通过使用命令`dir(__builtins__)`来进行列出.
而非内建函数则需要导入相应的模块.

一些函数

print函数

print(变量/字符串)
输出语句
【注】在Python2中,语法和python3有所不同,需要python + 输出的内容,如上面的helloworld程序,在python2中需要这样写:print myString

格式化print函数,有些时候我们需要按照一定的格式向外输出语句,现在就需要格式化了。

print("转换后的温度值为{:.2f}C".format(C))

上面的{}表示槽,后续变量会填充在槽中,{:.2f}表示将变量C填充到这个位置时取小数点后两位。如C为12.3456,小数点后两位是12.35,存在四舍五入。

round函数

round函数方法返回浮点数的整数值,注意是整数值。具体的规则看下面。
在python3中,有一个小坑,就是round()并不是真正的四舍五入.如图

【Python3学习】走进Python_第5张图片

而可以这样的总结为:在奇数的时候,是四舍五入,在偶数的时候是五舍六入.

input函数

input('执行后输出的提示')
返回的是数据类型是str,所以有时需要进行类型转换,int(),float()这样的函数。也可以通过eval()把他当成有效的python表达式来求值并返回计算结果。

eval函数

去掉参数最外侧引号并执行余下语句的函数。评估函数。

模块

所谓模块,就是一个.py文件.
在物理上的组织方式我们称为文件.
而在逻辑上的组织方式我们就称为模块.
这样说来这个就是说法不同而已.

所谓的包,就是有层次的文件目录结构.
如下:

AAA/
    __int__.py
    bbb.py
    CCC/
        __int__.py
        c1.py
        ...
    DDD/
        __int__.py
        ...
    EEE/

以上就是一个一个目录结构,如果我们要导入具体的模块的话,如c1的话,就需要如下命令:

>>>import AAA.CCC.c1
>>>AAA.CCC.c1.func1(123)//通过import导入的,我们还需要写前面的一大堆

>>>from AAA.CCC.c1 import func1
>>>func1(123)//这个就可以直接写函数

如何导入模块呢?

有以下几种方式:

import 包名.类名
import 包名.类名,包名.类名
from 包名.类名 import 具体的属性和函数

用import和from import有什么区别呢?
import:导入包,使用时要用包.属性和方法来使用
from import:将包中的某个属性和方法导入,直接用方法和属性直接使用。

还有一个不同的地方在于,from import 因为是直接导的方法和属性,这就存在着重名的问题,如果程序很大 ,那么重名的就很难受,所以from import 适用于小型代码量。

语句

分支语句

if : elif : else : ,来表示条件判断分支语句。

循环语句

for循环

for 变量 in 可迭代对象:
    被执行的语句

可迭代对象包括:String List Tuple Dictionary File
【注意】for j in range(10)类似这种的,在跳出循环,j不会像其他高级语言一样跳出之后再+1。

Range函数也生成一个可迭代的对象。
例如:

for i in range(5)
    print(i)

输出:
0
1
2
3
4

range(N)函数,产生循环计数序列的
range(M,N):产生M到N-1的整数序列。
range(M,N,Step):步长
当缺省step时,默认值为1,
缺省start和step 默认值0 和 1
end不能缺省。
range(5): 0,1,2,3,4 产生0到N-1的整数序列,共N个

range()生成的是一个range对象,类似于一个生成器generator,可迭代。
可以用在列表解析和生成器表达式中,具体如下:

列表解析
>>> [i for i in range(10)]
[0,1,2,3,4,5,6,7,8,9]
>>> [i + 1 for i in range(10) if i%2 == 0 ]
[1,3,5,7.9]
生成器表达式
>>> (i+1 for i in range(10) if i % 2 == 0)
 at 0x00000100392405900> #生成一个生成器对象而不是列表

一般在数据量大的时候用生成器表达式,在数据量小的时候用列表解析。

while循环

while 条件:
    循环语句

continue break 和else

break:跳出当前循环
continue:跳出本次循环
else:如果循环代码从break出终止,跳出循环
如果正常结束循环,则执行else中的代码

如:

from math import sqrt
num = int(input("Please enter a number:"))
j = 2 
while j <= int(sqrt(num)):
    if num% j == 0:
        print('{:d} is not prime'.format(num))
        break
    j += 1
else:
    print('{:d} is a prime'.format(num))

自定义函数

def 函数名(参数):
    文档字符串'apply operation + to argument'
    函数体

通过print fn.__doc__来获取文档字符串

默认参数

默认参数可以按照以下给出:

def f(x,y=True):
    ...
    ...

这样在调用的时候,如果不给出默认参数就会直接传入默认参数。
如调用f(20)其实等同于`f(20,True)

【注】不可以将默认参数放在其他参数的前面。结合前面的例子:如

def f(x = True,y):
    ...

如果以上可行的话,调用f(False)是将False传给哪一个呢?

关键字参数

关键字参数指的是,在调用函数的时候,可以自己指定参数。如
调用上面的f函数,可以这样调用:f(y= False,x=20)这样就可以打乱顺序自己定义。

【注】:一旦出现了一个关键字定义了,就必须全部,可以理解为,有两种模式,一种是普通的参数传递,另一种就是这个按键值进行传,我把这个开关打开了,你就必须全部按照这个规则去做、

函数传递

函数可以作为参数进行传递。

lambda表达式

所谓的lambda表达式,其实是匿名函数。
它是这样的格式:

lambda 参数1,参数2,... : 返回的值

当然这个lambda表达式赋值给一个变量就可以通过这个变量进行调用了。

如:

r = lambda x : x+x
r(5)

输出:

10

其实就是等同于以下语句:

def r(x):
    return x + x

测试

=

1单选(1分)
以下哪一个语句不可以打印出"hello world"字符串(结果需在同一行)?

A.print("hello world")

B.print('''hello 
    world''')

1.00/1.00
C. print('hello \
    world')

D.print('hello world')

2单选(1分)
Python中input()函数的返回的是以下哪一种类型?

A.dict
B.int
C.list
D.str
1.00/1.00

3单选(1分)
以下关于模块module的描述中错误的是哪一项?

A.用import导入了模块之后,可以按照“模块.函数”的格式使用这个模块的函数
B.一个完整的Python文件即是一个模块,是增强Python功能的扩展
C.Python目前还不支持一次性导入多个模块
1.00/1.00
D.可以使用变量来引用函数,例如可以通过bar=math.sqrt进行赋值,然后就可以使用bar来进行计算平方根,例如bar(9)结果是3.0

4单选(1分)

以下关于Python的赋值说法中错误的是哪一个选项?

A.Python 赋值时大小写不敏感
1.00/1.00
B.Python中同一个变量名在不同位置可以被赋予不同的类型与数值
C.Python中不需要显式声明该变量的类型,根据“值”确定类型
D.Python支持链式赋值和多重赋值

5多选(1分)

以下表达式的计算结果是3(或3.0)的选项有哪些?

A.ord('D') – ord('A')
0.50/1.00
B.1 / 2 + 2.5
0.50/1.00
C.9 // 2 – 1.5
D.35 % 10

6多选(1分)

如果想要查看math库中pi的取值是多少,可以利用以下什么方式(假设已经执行了import math,并且只要包含pi取值就可以)?

A.help(math)
0.50/1.00
B.dir(math)
C.print(math.pi)
0.50/1.00
D. print(pi)

7多选(1分)

以下哪些不是Python的关键字?

A.from
B.as
C.list
0.50/1.00
D.dict
0.50/1.00

8判断(1分)

判断如下陈述是否正确?

Python既可以在Shell中运行执行,也可以存储成以.py为扩展名的文本文件使用Python解释器去执行。

A.不可以
B.可以
1.00/1.00

你可能感兴趣的:(【Python3学习】走进Python)