Python(假)速成笔记

197 阅读10分钟

Python的优点与缺点

优点

  1. 除了内置库外,还有大量第三方库
  2. 优雅,明确,语法简单,可读性强

缺点

  1. 运行速度较慢(但由于网络更慢,可忽略)
  2. 代码不能加密,发布编写的Python程序,实际上就是发布源代码(C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去)

Python与其他语言的比较

  1. Python 为可读性设计,与英语有一些相似之处,并受数学的影响。
  2. Python 使用新行来完成命令,而不像通常使用分号或括号的其他编程语言。
  3. 依赖缩进,使用空格来定义范围;例如循环、函数和类的范围。其他编程语言通常使用花括号来实现此目的。

运行

命令行模式

可打开.py文件运行,文本编辑时代码需完整,或直接运行python代码。

Python交互模式

Python交互式环境会把每一行Python代码的结果自动打印出来(如100+200运行结果是300,不需要print()),但是,直接运行Python代码却不会。

直接运行py文件

在Windows上不行,但在Mac和Linux上是可以的,方法是在.py文件的第一行加上一个特殊的注释:#!/usr/bin/env python3

然后,通过命令给hello.py以执行权限: $ chmod a+x hello.py

注释

#This is a comment
#written in
#more than just one line
print("Hello, World!")
"""
This is a comment
written in 
more than just one line
"""
print("Hello, World!")

语法

输入&输出

输出

print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出

print()会依次打印每个字符串,遇到逗号“,”会输出一个空格

如需结合文本和变量,Python 使用 + 字符:

示例

x = "awesome"
print("Python is " + x)

对于数字,+ 字符用作数学运算符

输入

name = input('please enter your name: ')
print('hello,', name)

程序一运行,会首先打印出please enter your name,这样,用户就可以根据提示,输入名字后,得到hello, xxx的输出

缩进

必须在同一代码块中使用相同数量的空格,否则 Python 会出错。

数据类型

整数

进制 前缀
2进制 0b(binary)
8进制 0o(octal)
10进制 无(Decimal)
16进制 0x(Hexadecimal)

进制之间的相互转化:

bin() 转2进制

oct() 转8进制

int() 转10进制

hex() 转16进制

浮点数(小数)

对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法也是精确的),而浮点数运算则可能会有四舍五入的误差。

复数

用 "j" 作为虚部编写,如:x = 2+3j

类型转换

可以使用 int()、float() 和 complex() 方法从一种类型转换为另一种类型

随机数

Python 有一个名为 random 的内置模块,可用于生成随机数

示例:

import random
print(random.randrange(1,10))

字符串

字符串是以单引号 ' 或双引号 " 括起来的任意文本, 注意,' '或" "本身只是一种表示方式,不是字符串的一部分,如果'本身也是一个字符,可以用""括起来

如果字符串内部既包含'又包含", 可以用转义字符\来标识,比如:

'I\'m \"OK\"!'

表示的字符串内容是:I'm "OK"!

转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\

如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r' '表示' '内部的字符串默认不转义

示例:

>>> print('\\\t\\')
\       \
>>> print(r'\\\t\\')
\\\t\\

如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用''' '''的格式表示多行内容(注意在输入多行内容时,提示符由>>>变为...,提示你可以接着上一行输入,注意...是提示符,不是代码的一部分),多行字符串''' '''还可以在前面加上r使用,表示''' '''内部的字符串默认不转义

示例:

>>> print('''line1
... line2
... line3''')
line1
line2
line3

布尔值

一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写),布尔值可以用and、or和not运算。

大多数值都为 True

如果有某种内容,则几乎所有值都将评估为 True。

除空字符串外,任何字符串均为 True。

除 0 外,任何数字均为 True。

除空列表外,任何列表、元组、集合和字典均为 True。

某些值为 False

实际上,除空值(例如 ()、[]、{}、""、数字 0 和值 None)外,没有多少值会被评估为 False。

空值

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

变量

变量名称

  1. 变量名必须以字母或下划线字符开头,不能以数字开头

  2. 变量名只能包含字母数字字符和下划线(A-z、0-9 和 _)

  3. 变量名称区分大小写(age、Age 和 AGE 是三个不同的变量)

赋值

等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言(如c语言,Java)

Python 允许在一行中为多个变量赋值,还可以在一行中为多个变量分配相同的值

如果尝试组合字符串和数字,Python 会给出错误

要在函数内部更改全局变量的值,使用 global 关键字引用该变量

示例:

x = "awesome"
def myfunc():
  global x
  x = "fantastic"
myfunc()
print("Python is " + x)

运行结果为Python is fantastic

常量

在Python中,通常用全部大写的变量名表示常量:PI = 3.14159265359

除法:

在Python中,有两种除法,一种除法/,计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数(9/3=3.0)

还有一种除法是//,称为地板除,两个整数的除法仍然是整数(取整数部分)

字符串

  • 于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

示例:

>>> ord('中')
20013
>>> chr(66)
'B'
  • 字符串是数组

方括号可用于访问字符串的元素。

示例:获取位置 1 处的字符(请记住第一个字符的位置为 0)

a = "Hello, World!"
print(a[1])

输出为e

  • 裁切 指定开始索引和结束索引,以冒号分隔,以返回字符串的一部分。

示例: 获取从位置 2 到位置 5(不包括)的字符:

b = "Hello, World!"
print(b[2:5])

输出为llo

  • 负的索引

示例:获取从位置 5 到位置 2(不包括) 的字符,从字符串末尾开始计数

b = "Hello, World!"
print(b[-5:-2])

输出为orl

  • 其他字符串操作

len() 函数返回字符串的长度

a = "Hello, World!"
print(len(a))

strip() 方法删除开头和结尾的空白字符

a = " Hello, World! "
print(a.strip()) # returns "Hello, World!"

lower() 返回小写的字符串

a = "Hello, World!"
print(a.lower())

upper() 方法返回大写的字符串

a = "Hello, World!"
print(a.upper())

replace() 用另一段字符串来替换字符串

a = "Hello, World!"
print(a.replace("World", "Kitty"))

split() 方法在找到分隔符的实例时将字符串拆分为子字符串

a = "Hello, World!"
print(a.split(",")) # returns ['Hello', ' World!']

如需检查字符串中是否存在特定短语或字符,我们可以使用 in 或 not in 关键字

txt = "China is a great country"
x = "ina" in txt
print(x)
#return True

字符串级联(串联),使用 + 运算符

a = "Hello"
b = "World"
c = a + " " + b
print(c)

输出为Hello World

注意:不能用+运算符组合字符串和数字,但是可以使用 format() 方法组合字符串和数字。

age = 18
txt = "My name is Bill, and I am {}"
print(txt.format(age))

format() 方法接受不限数量的参数,并放在各自的占位符中

quantity = 3
itemno = 567
price = 49.95
myorder = "I want {} pieces of item {} for {} dollars."
print(myorder.format(quantity, itemno, price))

可以使用索引号 {0} 来确保参数被放在正确的占位符中

quantity = 5
itemno = 789
price = 24.36
myorder = "I want to pay {2} dollars for {0} pieces of item {1}."
print(myorder.format(quantity, itemno, price))

运算符

比较特殊的算术运算符

名称 符号
**
取模 %
地板除 //
对一个二进制数按位取反 ~

比较特殊的赋值运算符(负数按补码形式参加按位或运算)

符号 作用
&= 按位与赋值
= 按位或赋值
^= 按位异或赋值
<<= 左移赋值(右边补零)
>>= 右移赋值(正数左补0,负数左补1)

逻辑运算符

符号 描述
and 如果两个语句都为真,则返回 True
or 如果其中一个语句为真,则返回 True
not 反转结果,如果结果为 true,则返回 False

身份运算符

符号 描述
is 如果两个变量是同一个对象,则返回 true
is not 如果两个变量不是同一个对象,则返回 true

成员运算符

符号 描述
in 如果对象中存在具有指定值的序列,则返回 True
not in 如果对象中不存在具有指定值的序列,则返回 True

列表

有序和可更改的集合。允许重复的成员。用方括号[]编写。

可以通过引用索引号来访问列表项,如thislist[1](正索引从0开始,复索引从-1开始)

如需确定列表中有多少项,使用 len() 。

如需将项目添加到列表的末尾,请使用 append() 方法:

thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)

元组

有序且不可更改的集合。允许重复的成员。用括号编写。

如需创建仅包含一个项目的元组,必须在该项目后添加一个逗号,否则 Python 无法将变量识别为元组。 示例;

thistuple = ("apple",)
print(type(thistuple))

#不是元组
thistuple = ("apple")
print(type(thistuple))

输出为tuple和str。

  • del 关键字可以完全删除元组
  • 使用 tuple() 方法来创建元组:
thistuple = tuple(("apple", "banana", "cherry")) # 请注意双括号
print(thistuple)

集合

集合是无序和无索引的集合。在 Python 中,集合用花括号编写。

无法通过引用索引来访问 set 中的项目,因为 set 是无序的,项目没有索引。

但是可以使用 for 循环遍历 set 项目,或者使用 in 关键字查询集合中是否存在指定值。

集合一旦创建,您就无法更改项目,但是您可以添加新项目。

要将一个项添加到集合,使用 add() 。

要向集合中添加多个项目,使用 update() 。

thisset = {"apple", "banana", "cherry"}
thisset.update(["orange", "mango", "grapes"])
print(thisset)

要删除集合中的项目,使用 remove() 或 discard() 。

还可以使用 pop() 删除项目,但此方法将删除最后一项。记住set 是无序的,因此您不会知道被删除的是什么项目。

字典

字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。

可以通过在方括号内引用其键名来访问字典的项目,获取 "model" 键的值:

x = thisdict["model"]

输出为911