# Python3

# 简介

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

  • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
  • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
  • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

# 第一个python程序

输出一个"Hello World!"

#!/usr/bin/python3
print("Hello World!")

# Python3 基础语法

# 编码

python3 源码文件以 UTF-8编码,所有字符串都是unicode字符串, 你也可以为源码指定不同的编码:

# -*- coding:cp-1252 -*-

上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码,对应适合语言为保加利亚语、白罗斯语、马其顿语、俄语、塞尔维亚语。

# python的保留字

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

import keyword
keyword.kwlist
输出结果:
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', '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/python
# 第一个注释
# 第二个注释
'''
第三个注释
第四个注释
'''
"""
第五个注释
第六个注释
"""
print("Hello World!")

# 行与缩进

python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {}.
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:


 

 

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

缩进不一致导致运行错误

if True:
    print ("Answer")
    print ("True")
else:
    print ("Answer")
  print ("False")    # 缩进不一致,会导致运行错误
# 输出: IndentationError: unindent does not match any outer indentation level

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

item_one = 1
item_two = 2
item_three = 3
total = item_one + \
        item_two + \
        item_three
print(total)

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

total = [1,2,3,
         4,5,6]
print(total)

# 空行

函数之间和类的方法之间用空行分割,表示一段新的的代码的开始.类和函数入口之间也用一行空行分隔, 以突出函数的开始.
空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构.
记住:空行也是程序代码的一部分。

# 等待用户输入

#!/usr/bin/python3
num = input("\n\n按下 enter 键后退出。")

# 在一行显示多条语句

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

#!/usr/bin/python3
import sys;x='snake';sys.stdout.write(x+"\n")
#write()返回值是 输出了多少个字符,中文算一个

# 缩进相同的多个语句构成代码组

缩进相同的一组语句构成一个代码块,我们称之代码组
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组
我们将首行及后面的代码组称为一个子句(clause)
如下实例:

if expression : 
   suite
elif expression : 
   suite 
else : 
   suite

print 默认输出是换行的,如果想要实现不换行,需要在变量末尾加上end="",通过指定结束符的方式:

#!/usr/bin/python3

x='a'
y='b'
# 换行输出的print
print(x)
print(y)
# 不换行输出的print
print(x,end="")
print(y,end="")
print()

# python3中实现清屏

#!/usr/bin/python3
#多条语句写成一句
import os;os.system("cls")

# import 与 from...import

python 使用import 或者from...import来导入相应的模块.
将整个模块(some module)导入, 格式为: import somemodule
从某个模块中导入某个函数,格式为:from somemodule import somefuction
从某个模块中导入多个函数,格式为 from somemodule import firstfunc, secondfunc, thirdfunc
将某个模块的全部函数导入,格式为from somemodule import * 例子: 导入一整个sys模块

#!/usr/bin/python3
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('path:',path) #因为已经导入path成员,此处引用不需要sys.path

# python3的帮助命令

很多程序可以执行一些操作来查看一些基本信息,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. ]

# python基础数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。

等号(=)用来给变量赋值。

等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:

#!/usr/bin/python3

counter = 100          # 整型变量
miles   = 1000.0       # 浮点型变量
name    = "runoob"     # 字符串

print (counter)
print (miles)
print (name)

# 多个变量赋值

一次给多个变量赋值

  • 方式1:
a = b = c = 1
  • 方式2:
a,b,c = 1,2,"snake"

# 标准数据类型

Python3 中有六个标准的数据类型:

  • Number (数字)
  • String (字符串)
  • List (列表)
  • Tuple (元祖)
  • Set (集合)
  • Dictionary (字典)

其中按照是否可变数据进行区分:

  • 不可变数据类型(3个): Number, String, Tuple(元祖).
  • 可变数据类型: List, Dictionary (字典),Set (集合).

img

# Python3 的Number类型

Python3 中支持, int,float,bool,complex(复数) 四种数据类型
在Python3 中 只有一种能够整型类型int, 表示为长整型,没有Python2中的 Long.
通过使用内置的type()函数来查询变量所指的对象类型

#!/usr/bin/python3
a,b,c,d = 1,3.14,True,4+3j
print(type(a),type(b),type(c),type(d))

还可以使用 isinstance 来判断 变量是否属于某个数据类型, 是的话返回true,反之返回false

#!/usr/bin/python3
a = 111
isinstance(a,int) #判断是否属于int类型

isinstance 与 type() 的区别

  • type() 不会人为自类是一种父类类型, 只是单纯判断类型是否相匹配
  • isinstance() 会认为子类是一种父类类型, 用来判断某个对象是否为其类或者子类

TIP

在java中,有一个 关键字 instanceof 可以用来判断 对象的实际引用对象是否属于某个类

Object obj = new Student();
System.out.println(obj instanceof Student) // 输出True
System.out.println(obj instanceof String) // 输出false
#!/usr/bin/python
# 定义一个类 A
class A:
    pass
#定义一个类 B,继承类A
class B:
    pass
#使用isinstance判断,A的实例的类型 是否为 A
isinstance(A(),A) # 返回True
#使用type()判断A的数据类型
type(A()) == A # 返回True
# 判断类B是否为A的实例
isinstance(B(),A) # 返回True
# 判断B的类型是否为 A
type(B()) == A # 返回False

注意: Python3中, bool 是int的自类,True和False可以和数字相加,True==1 False==0 会返回True,但是可以通过 is 来判断类型

#!/usr/bin/python
#判断一个类是否为另一个类的子类
issubclass(bool,int) #True
True == 1 # True
False == 0 # True
True+1 # 2
False+1 # 1
"""
注意从python3.8 开始,当我们使用 is 或者 is not 运算符时,会抛出警告信息
<stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
我们应该使用 == 或者 != 来代替它俩
"""
1 is True # 返回 False
0 is False #返回 False

在Python2 中没有布尔类型,它用数字0表示False,用1表示True

删除某些对象的引用

#方式1
del var1[,var2[var3[...,varN]]]
#方式2
del var_a,var_b

# 数值运算

5+4
4.3 -2
3*7
2 / 4 # 除法得到一个浮点数
2 // 4 # 除法得到一个整数
17 % 3 # 取余
2 ** 5 # 乘方, 结果是 2^5 = 32
  • 在混合计算时,Python会把整型转换成为浮点数。
  • 数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数
  • 在混合计算时,Python会把整型转换成为浮点数.

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

# String 字符串类型

python 中的字符串使用 单引号',或者双引号"括起来,同时可以使用\来转义特殊字符.

# 字符串的截取语法格式

变量[开始下标:结束下标], 指的注意的是, 在python中, 负数的索引是有含义的, -1 代表 数组最后一个元素,-2代表数组中倒数第二个元素. 所以我们进行截取时也可以倒着截取字符串

例子:

#!/usr/bin/python
str = "hello world"
subStr1 = str[0:5]
subStr2 = str[6:11]
print (str * 2)      # 输出字符串两次,也可以写成 print (2 * str)
print (str[-5:])     # 输出 "world",从倒数第5个字符开始截取,直到最后一个
print (str[2:])      # 输出从第三个开始的后的所有字符
print (str * 2)      # 输出字符串两次,也可以写成 print (2 * str)
print(subStr1) # "hello"
print(subStr2) # "world"

# 字符串转义使用\ 以及python中没有字符类型,只有字符串类型

Python使用反斜杠\来传译特殊字符,如果不想让反斜杠发送转义,可以在字符串前面添加一个r,表示原始字符串:

print('venom\nsnake')
print(r'venom\nsnake')

注意:

  • Python 没有单独的字符类型,一个字符就是长度为1的字符串。
  • 与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如 word[0] = 'm' 会导致错误。
  • 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
  • 字符串可以用+运算符连接在一起,用*运算符重复。
  • Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
  • Python中的字符串不能改变。
更新时间: 2024年5月26日星期日下午4点47分