学习笔记--《python 编程入门经典》
python 编程入门经典
1.编程基础与字符串
-
python是解释性语言,不用了解计算机内部细节。
-
python shell是一种查看运行中的python代码的方式。好处是可以让程序员在自己创建的上下文环境中进行实验。
-
单引号与双引号、三层引号是等价的,都是表示字符串。但灵活应用可以减少转义字符的使用,简化字符串定义。
- 三引号可以定义多行数据,不用手动加换行符。
-
字符串串联方法。
copy- 1
- 2
- 3
- 4
- 5
- 6
- 7
"hello" " world" #法1 "hello"+" "+"word" #法2 print("hello","word") #法3 会自动加空格 print("hello"+"word") #法4 没有空格 "hello %s" % ("world") #法5 %s字符串格式说明符 "hello %s%s" % ("world"," !") "hello %10s%s" % ("world","!") #不足10,左边补空格
-
字符串具有分片功能
copy- 1
- 2
string = "name" print(string[0]) #输出n
2.数值与运算符
- pyhotn有三种数值类型:整型、浮点型和虚数。使用
type
可以查看数值的类型。- 虚数表示:数字后面加一个j,如
a=12j+1
。
- 虚数表示:数字后面加一个j,如
- C语言中的格式说明符,适用pyhton。
3.变量
-
python提供六种基本类型:数值、字符串、元组、列表、集合、字典。
-
元组tuple:不可更改的数据序列。创建时被圆括号包围。
-
可以单独的访问每个值。
-
可以使用内置函数
len()
获取长度。 -
也可以嵌套元组。
-
若要创建只有一个元素的元组,最后需要加上逗号,否则就是字符串。
copy- 1
- 2
- 3
- 4
- 5
- 6
filler = ("string","filled","by a","tuple") print(filler[3]) print(len(filler)) b = (("in","tuple"),"outer","tuple") #嵌套元组 print(b[0][1]) #输出第一个tuple c = ("tuple",) #逗号不能省略
-
-
列表list:可以更改的数据序列。创建时用方括号包围。
-
也可以像元组一样随机访问,但可以修改。
-
可以使用
append()
函数向末尾添加一个新元素。 -
可以使用
extend()
函数向末尾添加另一个列表。 -
适用
pop()
方法移除元素。 -
[头下标:尾下标]
,就可以截取相应的列表copy- 1
- 2
- 3
- 4
- 5
- 6
breakfast = ["coffee","tea","toast","egg"] breakfast[2] = "youtiao" #可以修改 breakfast.append("baozi") breakfast.extend(["milk","peanut"]) #列表元素添加 breakfast.pop(2) #删除2号元素并返回该元素值 breakfast[1:3]
-
-
字典dict:以名称索引的分组数据。创建时用大括号。类似于c++中的
vector
。-
允许一个键下有多个值。
copy- 1
- 2
- 3
- 4
- 5
- 6
dicta = {} #空字典 dicta["breakfast"] = "baozi" dicta["lunch"] = "rice" dicta["dinner"] = "zhou" #小括号可以省略,一个键多个值(组成一个元组) dicta["persons"] = ("cr","xm")
-
-
集合set,与字典类似,不过没有值,只有键;是不包括重复元素的数据集。适用
set()
创建copy- 1
- 2
a=['a','a','b','b','c'] #列表 ss=set(a) #创建集合ss 结果为{'a','b','c'} 删除了重复元素
-
其他类型
None
,True
(非0值),False
(0)。 -
序列类型的共有属性(字典是非序列类型,因为它没有特定的顺序)
-
对序列分片
copy- 1
- 2
- 3
breakfast[1:3] #列表分片 string[2:4] #字符串分片 filler[0:3] #元组分片
-
4.pyhton语言基础
-
对真值和假值取反
not
copy- 1
- 2
not True #等于False not 1 #等于False
-
判断语句
copy- 1
- 2
- 3
- 4
- 5
- 6
- 7
a = 3 if a > 3: print("a > 3") elif a < 3: print("a <= 3") else: print("a = 3")
-
循环
for ... in ...
,in
后面提供一个序列,如列表、元组或者range()
for
循环与while
循环可以添加else
,在非break
结束的循环时执行。
-
异常
- 也可以通过
raise
显示地引发异常
copy- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部份引发了'name'异常 except <名字>,<数据>: <语句> #如果引发了'name'异常,获得附加的数据 else: <语句> #如果没有异常发生
- 也可以通过
-
python文件第一行应该是
#!/usr/bin/env python
,这将使得UNIX、LINUX能够运行这些脚本。通过./xxx.py
的方式,不用每次都用python xx.py
执行。- 注意:需要先给该文件加上可执行权限。
chmod a+x xxx.py
- 注意:需要先给该文件加上可执行权限。
-
在函数中描述函数,文档字符串。
copy- 1
- 2
- 3
- 4
- 5
def add(a,b = 1): #可以加默认值 """add two integer a and b""" #用 add.__doc__ 可以输出 c = a + b return c print("%s" % add.__doc__) #使用dir()可以查看对象的所有属性
- 对于参数,可以用
type()
函数来判断参数类型,从而选择执行。 - 可以嵌套函数,但不能被外部直接使用。
5.类与对象
-
__private_attrs
,两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时self.__private_attrs
。 -
__private_method
,两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods
。self
代表的是类的实例,也可以使用this
,但一般用self
。
copy- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
#!/usr/bin/env python class MyClass: """一个简单的类实例""" #定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 i = 12345 def f(self): return 'hello world' def __init__(self): #构造方法 i = 1234544 # 实例化类 x = MyClass() # 访问类的属性和方法 print("MyClass 类的属性 i 为:", x.i) print("MyClass 类的方法 f 输出为:", x.f())
-
继承
copy- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
class DerivedClassName(BaseClassName): #单继承 <statement-1> ... <statement-N> class DerivedClassName(Base1, Base2, Base3): #多继承 <statement-1> ... <statement-N>
-
重写父类方法
copy- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
#!/usr/bin/env python class Parent: # 定义父类 def myMethod(self): print ('调用父类方法') class Child(Parent): # 定义子类 def myMethod(self): print ('调用子类方法') c = Child() # 子类实例 c.myMethod() # 子类调用重写方法 super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法
6.组织程序
-
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。
-
需要将该模块文件所在位置加入
sys.path
中,否则会找不到该文件。 -
sys.path
是一个普通的列表,可以直接用append()
或extend()
添加。copy- 1
- 2
- 3
- 4
- 5
- 6
- 7
#!/usr/bin/env python import sys from Parent import myMethod #另一种导入方式 print('命令行参数如下:') for i in sys.argv: print(i) print('\n\nPython 路径为:', sys.path, '\n')
-
-
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。
-
简单来说,包就是文件夹,但该文件夹下必须存在
__init__.py
文件, 该文件的内容可以为空。copy- 1
- 2
- 3
- 4
|--package_runoob #import该包名就能自动运行__init__.py,从而引入其他模块 |-- __init__.py #在其中引入runoob1、runoob2模块 |-- runoob1.py |-- runoob2.py
-
-
sys.modules.keys()
能输出当前加载的所有模块。 -
if __name__ == '__main__':
只有在文件作为脚本时才能执行,被其他文件调用时不能执行。放在末尾,可用于测试模块和包。
本文作者:oniisan
本文链接:https://www.cnblogs.com/oniisan/p/pythonBasic.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步