Python学习之路

内容摘自:
http://www.runoob.com/python
https://www.cnblogs.com/jiyimeng/p/python11091.html

Python简介


Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

    1.  Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
    2.  Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。
    3.  Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
    4.  Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。








Python发展历史


Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。
像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。







Python 特点


  • 易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  • 易于阅读:Python代码定义的更清晰。
  • 易于维护:Python的成功在于它的源代码是相当容易维护的。
  • 一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
  • 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
  • 可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
  • 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
  • 数据库:Python提供所有主要的商业数据库的接口。
  • GUI编程:Python支持GUI可以创建和移植到许多系统调用。
  • .可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。







Python环境搭建


官方地址:https://www.python.org
下载地址:https://www.python.org/downloads

Python学习之路_第1张图片
下载内容截图

下载步骤:
1.下载相关的程序:根据与Mac OS X 和Windows区分;


Python学习之路_第2张图片
Windows下载截图

Python学习之路_第3张图片
安装界面

2.运行下载的程序;








Python集成开发环境: PyCharm


PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/







Python环境配置注意事项


  • Python添加到系统的环境变量中(一般在安装过程中勾选相关的选项即可,否则需要自己手动添加);







开发第一个简单的Python程序









Python基础语法


编码

默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。
当然可以为源码文件指定不同的编码:
# -- coding: cp-1252 --
上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码,对应适合语言为保加利亚语、白罗斯语、马其顿语、俄语、塞尔维亚语。

标识符

第一个字符必须是字母表中字母或下划线 _ 。
标识符的其他的部分由字母、数字和下划线组成。
标识符对大小写敏感。
在 Python 3 中,非 ASCII 标识符也是允许的了

保留字

保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:

    >>> import keyword
    >>> keyword.kwlist
   ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
注释

Python中单行注释以 # 开头,实例如下:

    #!/usr/bin/python3
    # 第一个注释
    print ("Hello, Python!") # 第二个注释
多行注释可以用多个 # 号,还有 ''' 和 """:
    
    #!/usr/bin/python3

    # 第一个注释
    # 第二个注释

    '''
    第三注释
    第四注释
    '''

    """
    第五注释
    第六注释
    """
    print ("Hello, Python!") 

执行以上代码,输出结果为:

    Hello, Python!
行与缩进

python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:

if True:
    print ("True")
else:
    print ("False")

以下代码最后一行语句缩进数的空格数不一致,会导致运行错误:

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
  print ("False")    # 缩进不一致,会导致运行错误
多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:

total = item_one + \
        item_two + \
        item_three

在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(),例如:

total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']
空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

记住:空行也是程序代码的一部分。

等待用户输入

执行下面的程序在按回车键后就会等待用户输入:

#!/usr/bin/python3

input("开始显示\n\n按下 enter 键后退出。")

以上代码中 ,"\n\n"在结果输出前会输出两个新的空行。一旦用户按下 enter 键时,程序将退出

同一行显示多条语句

Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:

#!/usr/bin/python3

import sys; x = 'hello '; sys.stdout.write(x + '\n'+x)

执行以上代码,输出结果为:

hello 
hello 
多个语句构成代码组

缩进相同的一组语句构成一个代码块,我们称之代码组。

像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。

我们将首行及后面的代码组称为一个子句(clause)。

if expression : 
   suite
elif expression : 
   suite 
else : 
   suite
Print 输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":

#!/usr/bin/python3

x="a"
y="b"
# 换行输出
print( x )
print( y )
print(1+2)
print(1-2)
print(False)
print("abc")
print('---------')
# 不换行输出
print( x, end=" " )
print( y, end=" " )
print()

以上实例执行结果为:

a
b
3
-1
False
abc
---------
a b 

import 与 from...import

在 python 用 import 或者 from...import 来导入相应的模块。

将整个模块(somemodule)导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为: from somemodule import *

导入 sys 模块

import sys
print('================Python import mode==========================');
print ('命令行参数为:')
for i in sys.argv:
    print (i)
print ('\n python 路径为',sys.path)

导入 sys 模块的 argv,path 成员

from sys import argv,path  #  导入特定的成员
 
print('================python from import===================================')
print('path:',path) # 因为已经导入path成员,所以此处引用时不需要加sys.path
命令行参数

很多程序可以执行一些操作来查看一些基本信息,Python可以使用-h参数查看各参数帮助信息:

$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser (also PYTHONDEBUG=x)
-E     : ignore environment variables (such as PYTHONPATH)
-h     : print this help message and exit

[ etc. ]








数字(Number)类型


python中数字有四种类型:整数、布尔型、浮点数和复数。

int (整数)

如 1, 只有一种整数类型 int,表示为长整型,Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型,实际上由于机器内存的有限,我们使用的整数是不可能无限大的。

n=-4
print("n的值:                             :",n);
print("绝对值方法:n.__abs__()             :",n.__abs__());
print("相加运算符:n.__add__(4)            :",n.__add__(4));
print("按位与运算:n.__and__(-4)            :",n.__and__(-4));
print("判断是否相等:n.__eq__(-4)           :",n.__eq__(-4));
print("转成浮点数:n.__float__()            :",n.__float__());
print("做除法,取整数:n.__floordiv__(3)     :",n.__floordiv__(3));
print("做除法,取余数:n.__mod__(3)          :",n.__mod__(3));
print("判断是否大于等于:n.__ge__(-4)       :",n.__ge__(-4));
print("判断是否大于:n.__gt__(-4)           :",n.__gt__(-4));
print("判断是否小于等于:n.__le__(-3)        :",n.__le__(-3));
print("判断是否小于:n.__lt__(-4)           :",n.__lt__(-4));
print("取反运算:n.__neg__()                :",n.__neg__());
print("返回X的Y次方的值:n.__pow__(2)       :",n.__pow__(2));
print("返回二进制的最小长度:bin(n)         :",bin(n));

输出结果

n的值:                             : -4
绝对值方法:n.__abs__()             : 4
相加运算符:n.__add__(4)            : 0
按位与运算:n.__and__(-4)            : -4
判断是否相等:n.__eq__(-4)           : True
转成浮点数:n.__float__()            : -4.0
做除法,取整数:n.__floordiv__(3)     : -2
做除法,取余数:n.__mod__(3)          : 2
判断是否大于等于:n.__ge__(-4)       : True
判断是否大于:n.__gt__(-4)           : False
判断是否小于等于:n.__le__(-3)        : True
判断是否小于:n.__lt__(-4)           : False
取反运算:n.__neg__()                : 4
返回X的Y次方的值:n.__pow__(2)       : 16
返回二进制的最小长度:bin(n)         : -0b100

bool (布尔)

在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来:

print(True);
print(False);
print(1>2);
print(1<2);
print(True+10);
print(False+10);
print(True==1);
print(True==2);
print(False==1);
print(True==0);
print("========================================================")
print("True and True:       ",True and True);
print("True and False:      ",True and False);
print("False and False:     ",False and False);
print("5 > 3 and 3 > 1:     ",5 > 3 and 3 > 1);
print("========================================================")
print("True or True:       ",True or True);
print("True or False:      ",True or False);
print("False or False:     ",False or False);
print("5 > 3 or 3 > 1:     ",5 > 3 or 3 > 1);
print("========================================================")
print("not True:       ",not True);
print("not False:      ",not False);
print("not 1 > 2:      ",not 1 > 2);
print("========================================================")

输出结果

True
False
False
True
11
10
True
False
False
False
========================================================
True and True:        True
True and False:       False
False and False:      False
5 > 3 and 3 > 1:      True
========================================================
True or True:        True
True or False:       True
False or False:      False
5 > 3 or 3 > 1:      True
========================================================
not True:        False
not False:       True
not 1 > 2:       True
========================================================

float (浮点数)

浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250),如 1.23、3E-2

complex (复数)

复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。 如 1 + 2j、 1.1 + 2.2j

空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

注意:

  1、Python可以同时为多个变量赋值,如a, b = 1, 2。
  2、一个变量可以通过赋值指向不同类型的对象。
  3、数值的除法(/)总是返回一个浮点数,要获取整数使用 // 操作符。
  4、在混合计算时,Python会把整型转换成为浮点数。








字符串(String)


  • python中单引号和双引号使用完全相同。
  • 使用三引号('''或""")可以指定一个多行字符串。
  • 转义符 ''
  • 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。。 如 r"this is a line with \n" 则\n会显示,并不是换行。
  • 按字面意义级联字符串,如"this " "is " "string"会被自动转换为this is string。
  • 字符串可以用 + 运算符连接在一起,用 * 运算符重复。
  • Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
  • Python中的字符串不能改变。
  • Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
  • 字符串的截取的语法格式如下:变量[头下标:尾下标]
word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由多行组成"""

实例

#!/usr/bin/python3

str='Test'

print(str)                 # 输出字符串
print(str[0:-1])           # 输出第一个到倒数第二个的所有字符
print(str[0])              # 输出字符串第一个字符
print(str[2:5])            # 输出从第三个开始到第五个的字符
print(str[2:])             # 输出从第三个开始的后的所有字符
print(str * 2)             # 输出字符串两次
print(str + '你好')        # 连接字符串

print('------------------------------')

print('hello\nTest')      # 使用反斜杠(\)+n转义特殊字符
print(r'hello\nTest')     # 在字符串前面添加一个 r,表示原始字符串,不会发生转义

输出结果为:

Test
Tes
T
st
st
TestTest
Test你好
------------------------------
hello
Test
hello\nTest

注意

  • Python 没有单独的字符类型,一个字符就是长度为1的字符串。
  • Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。
  • 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
  • 字符串可以用+运算符连接在一起,用*运算符重复。
  • Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
  • Python中的字符串不能改变。







列表(List)


List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

列表是写在方括号([])之间、用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

list = ['abcd3R', 123, 3.21, 'EDADW', 123212.33,complex(1,-1)]
tinylist = [123, 'bill']

print("输出完整列表",list)  # 输出完整列表
print("输出列表第一个元素",list[0])  # 输出列表第一个元素
print("从第二个开始输出到第三个元素",list[1:3])  # 从第二个开始输出到第三个元素
print("输出从第三个元素开始的所有元素",list[2:])  # 输出从第三个元素开始的所有元素
print("输出两次列表",tinylist * 2)  # 输出两次列表
print("连接列表",list + tinylist)  # 连接列表

输出结果:

输出完整列表 ['abcd3R', 123, 3.21, 'EDADW', 123212.33, (1-1j)]
输出列表第一个元素 abcd3R
从第二个开始输出到第三个元素 [123, 3.21]
输出从第三个元素开始的所有元素 [3.21, 'EDADW', 123212.33, (1-1j)]
输出两次列表 [123, 'bill', 123, 'bill']
连接列表 ['abcd3R', 123, 3.21, 'EDADW', 123212.33, (1-1j), 123, 'bill']

与Python字符串不一样的是,列表中的元素是可以改变的:

a=[1,2,3,4,5,6,7,8]
print(a)
a[1]="a"
a[3:6]=["v","b","n","x","d"] #将3到6的位置替换成后面的数组
print(a)
print(a[3])

输出结果
···
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 'a', 3, 'v', 'b', 'n', 'x', 'd', 7, 8]
v
···







Tuple(元组)


元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开。

tuple = ( 'abcd', 786 , 2.23, 'test', 70.2  )
tinytuple = (123, 'test')
print ("输出完整元组                        ",tuple)             # 输出完整元组
print ("输出元组的第一个元素                ",tuple[0])          # 输出元组的第一个元素
print ("输出从第二个元素开始到第三个元素    ",tuple[1:3])        # 输出从第二个元素开始到第三个元素
print ("输出从第三个元素开始的所有元素      ",tuple[2:])         # 输出从第三个元素开始的所有元素
print ("输出两次元组                        ",tinytuple * 2)     # 输出两次元组
print ("连接元组                            ",tuple + tinytuple) # 连接元组

输出结果

输出完整元组                         ('abcd', 786, 2.23, 'test', 70.2)
输出元组的第一个元素                 abcd
输出从第二个元素开始到第三个元素     (786, 2.23)
输出从第三个元素开始的所有元素       (2.23, 'test', 70.2)
输出两次元组                         (123, 'test', 123, 'test')
连接元组                             ('abcd', 786, 2.23, 'test', 70.2, 123, 'test')
  • 虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
  • 构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
print(tup1)
print(tup2)

输出结果

()
(20,)

注意

  1. string、list和tuple都属于sequence(序列)。
  2. 与字符串一样,元组的元素不能修改。
  3. 元组也可以被索引和切片,方法一样。
  4. 注意构造包含0或1个元素的元组的特殊语法规则。
  5. 元组也可以使用+操作符进行拼接。








集合(Set)


集合(set)是一个无序不重复元素的序列。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 { } 或者 set() 函数创建集合,

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:parame = {value01,value02,...} 或者 set(value)

student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}

print(student)  # 输出集合,重复的元素被自动去掉

# 成员测试
if ('Rose' in student):
    print('Rose 在集合中')
else:
    print('Rose 不在集合中')

# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')

print("set可以进行集合运算   :",a,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中不同时存在的元素

输出结果:

{'Tom', 'Jim', 'Jack', 'Rose', 'Mary'}
Rose 在集合中
set可以进行集合运算   : {'r', 'c', 'd', 'a', 'b'} {'z', 'l', 'c', 'a', 'm'}
a和b的差集            : {'d', 'b', 'r'}
a和b的并集            : {'z', 'r', 'c', 'l', 'd', 'a', 'm', 'b'}
a和b的交集            : {'c', 'a'}
a和b中不同时存在的元素: {'r', 'z', 'm', 'l', 'd', 'b'}








字典(Dictionary)


字典(dictionary)是Python中另一个非常有用的内置数据类型。
列表是有序的对象结合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

  d = {key1 : value1, key2 : value2 }

基本代码:

#创建方式
dict0 = {'Alice': 2341, 'Beth': '9102', 'Cecil': '3258'}
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }

dict = {}
dict['one'] = "bill"
dict[2] = "china"

print(dict)
print(dict0)
print(dict1)
print(dict2)

tinydict = {'name': 'bill', 'code': 1, 'site': 'www.baidu.com'}

print("输出键为 'one' 的值     ",dict['one'])  # 输出键为 'one' 的值
print("输出键为 2 的值         ",dict[2])  # 输出键为 2 的值
print("输出完整的字典          ",tinydict)  # 输出完整的字典
print("输出所有键              ",tinydict.keys())  # 输出所有键
print("输出所有值              ",tinydict.values())  # 输出所有值

print("========================================================")
dict = {'Name': 'Test', 'Age': 7, 'Class': 'First'}

# 修改信息
dict['Age'] = 8;               # 更新 Age
dict['School'] = "Test"  # 添加信息

print("dict['Age']: ", dict['Age'])
print("dict['School']: ", dict['School'])

dict = {'Name': 'BIll', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键 'Name'
dict.clear()     # 清空字典
del dict         # 删除字典
print("dict['Age']: ", dict['Age'])
print("dict['School']: ", dict['School'])

输出结果(异常会在前面抛出来)

Traceback (most recent call last):
  File "E:/PythonProject/HelloWorld/Test.py", line 37, in 
    print("dict['Age']: ", dict['Age'])
TypeError: 'type' object is not subscriptable

{'one': 'bill', 2: 'china'}
{'Alice': 2341, 'Beth': '9102', 'Cecil': '3258'}
{'abc': 456}
{'abc': 123, 98.6: 37}
输出键为 'one' 的值      bill
输出键为 2 的值          china
输出完整的字典           {'name': 'bill', 'code': 1, 'site': 'www.baidu.com'}
输出所有键               dict_keys(['name', 'code', 'site'])
输出所有值               dict_values(['bill', 1, 'www.baidu.com'])
========================================================
dict['Age']:  8
dict['School']:  Test

你可能感兴趣的:(Python学习之路)