Python基础知识

前言

快考试了,写来复习用,如果对大家有帮助更好。


一、Python基础知识

1.基本数据类型

整数类型(int):分为正整数、0、负整数

浮点数类型(float):就是包含小数点的数

复数类型(complex):实部+虚部 j

布尔类型(bool):True和False

字符串类型(str)

列表(list):用方括号括起来,中间用逗号分开

元组(tuple):用圆括号括起来,中间用逗号分开

字典(dict):用大括号括起来,键和值用冒号分开,元素之间用逗号分开

集合(set):元素由不可变数据类型组成,且不重复

二、 控制语句

1.pass语句的作用

pass是一个空语句,不做任何事情,一般只做占用位语句,是为了保持程序结构的完整性。

a = 5
if a == 5:
    pass  # 没想好
else:
    print('ok')

三、 常用数据结构

1. 数据类型与数据结构

基本数据类型是构建数据结构的基础,而数据结构提供了更高级的数据组织和操作方式,以满足不同的编程需要。

python中常见的数据结构有:

序列:如字符串、列表、元组

映射:如字典

集合(set) 

以上三种是主要的三类容器

2.序列

        2.1 列表的创建与访问
# 方法一
a = [1, 2, 3, 4]

# 方法二:常用来将其他序列转换为列表
a = list() #创建了一个空列表,等价于 a = []
# 从左往右访问,第一个元素的序号是0

a = ['train', 'bus', 'car', 'ship']
print(a[0])
# 输出:train

# 从右往左访问,第一个元素的序号是-1

a = ['train', 'bus', 'car', 'ship']
print(a[-1])
# 输出:ship
         2.2 元组的创建与访问
# 方法一
a = (1, 2, 3, 4)
a = ('bike',)

# 方法二:常用来将其他序列转换为元组
a = tuple() #创建了一个空元组,等价于 a = ()

注意:

1.与列表不同,元组是不可更改

2.当元组只有一个元素时,该元素后面的逗号不能省略

 

# 从左往右访问,第一个元素的序号是0

a = ('train', 'bus', 'car', 'ship')
print(a[0])
# 输出:train

# 从右往左访问,第一个元素的序号是-1

a = ('train', 'bus', 'car', 'ship')
print(a[-1])
# 输出:ship

注意:

1.元组的访问与列表相同

2.索引后面是方括号哦,不要看元组是用圆括号创建,索引就使用圆括号

a = ('train', 'bus', 'car', 'ship')
print(a(-1)) 

# 改用圆括号
#报错了
Traceback (most recent call last):
  File "D:\Projects\Pycharm projects\pythonProject\main.py", line 2, in <module>
    print(a(-1))
TypeError: 'tuple' object is not callable

3.映射(字典)

        3.1 字典的创建
#方法一
a = {'a':1, 'b':2, 'c':3, 'd':4}

#方法二
a = dict(a=1, b=2, c=3, d=4)

#方法三:使用zip函数将两个序列打包成位置一对一的元组
a = ['a', 'b', 'c', 'd']
b = [1, 2, 3, 4]
c = dict(zip(a,b))

注意:

1.由于列表是可变的,所以不能作为字典的键 

2.字典的键是不可以重复的,值可以重复

        3.2 字典值的查找
a = {'a':1, 'b':2, 'c':3, 'd':4}

# 方法一
print(a['b'])
# 输出:2

# 方法二
print(a.get('b'))
# 输出:2
        3.3 字典与序列的转换 
a = {'a':1, 'b':2, 'c':3, 'd':4}

# 字典转换为列表
A = list(a.keys())    #将键转换为列表
B = list(a.values())  #将值转换为列表

# 字典转换为元组
A = tuple(a.keys())    #将键转换为元组
B = tuple(a.values())  #将值转换为元组

4.集合

        4.1 集合的创建
# 方法一
a = {1, 2, 3, 4}

# 方法二:此方法常用来将序列类型的数据转换为集合类型

a = set([1, 2, 3, 4])

注意:

1.空集合只能用set()来创建,因为{}表示的是空字典

2.集合的元素是不重复的,若创建集合时有相同的元素,python会自动剔除

        4.2 集合的运算
        4.3 集合的方法

四、可迭代对象

可迭代对象不是一种数据类型,也不是一种数据结构,它是一种协议,即实现了__iter__()方法的对象。在Python中,如果一个对象实现了__iter__()方法,且该方法返回一个迭代器对象(实现了__next__()方法),那么这个对象就是可迭代对象。

五、 字符串与正则表达式

1. 运算优先级

2. 字符串编码 

python3使用UTF-8编码,无论是英文还是汉字都按一个字符来处理

python3中也可以使用中文来做标识符

3. 格式化字符串

六、 函数的设计

1.函数的定义

def sayHello():              #函数定义
    print("Hello World!")    #函数体

#主程序
sayHello()                    #函数调用

 

2.函数的调用

上例中函数调用只能打印一个定义好的语句,怎么让他打印出自定义语句呢?

def sayHello(s):            #函数定义
    print(s)                 #函数体

#主程序
sayHello("Hello!")           #函数调用
sayHello("How are you?")

'''
程序运行结果:
Hello!
How are you?
'''

 代码中s只是一个“占位”的作用,并没有实际的值,需要等待函数调用时传给他实际的值。

s在函数中被称为形参,例子中的Hellow!就是所谓的实参。

3.函数的返回

有的函数的作用可能是计算一个值,这时候可能需要将计算的值返回给主函数,使用return语句实现。

def 阶乘计算(n):        # 函数定义
    s = 1
    for i in range(1, n+1):
        s *= i
    return s
# 主程序
i = 6
k = 阶乘计算(i)  # 需要阶乘计算函数的计算结果
print(str(i)+"!=", k)

注意:

1.为了看的清楚这里我用中文为函数命名

2.执行return语句 意味着函数体调用结束,无论之后函数体还有没有语句

七、 文件操作

1.打开文件

# 假如在d盘根目录下存在一个名为'test.txt'的文件,可以通过以下语句打开它:
file = open(r'd:\test.txt')
file = open('d:\\test.txt')  # 转义\防止\t有转义字符的意义 
file = open('d:/test.txt')

2.关闭文件

#方法一
file.close()

#方法二:使用with语句打开文件可以自动关闭

with open("example.txt") as file:

3.文件的读写操作 

f=open('d:\\test.txt','w')
f.write('123\n')
#输出:4

f.write('abc')
#输出:3

f.close()

 

这段代码的含义是:

  1. 使用open()函数打开位于d:\test.txt路径下的文本文件,并以写入模式('w')打开它。文件对象被赋值给变量f

  2. 调用f.write()方法向文件中写入内容。第一个调用f.write('123\n')将字符串'123'和一个换行符写入文件,并返回写入的字符数,即4。第二个调用f.write('abc')将字符串'abc'写入文件并返回写入的字符数,即3。

  3. 最后,使用f.close()方法关闭文件。

八、类与对象

1.类与对象的关系

比如定义一个“鸟类”,鹦鹉就是“鸟类”的一个对象,海鸥也是“鸟类”的一个对象。类是静态的,它们的属性在程序执行前就被定义好了,对象是动态的,他们在程序执行时可以被创建和删除。

2.类的属性

class Bird:
    有羽毛 = True
    繁衍方式 = '蛋生'  #类的属性
    def fly(self):   #类的方法
        print('飞行')
        2.1 类的属性

类的属性有两种:类属性和实例属性(对象属性),类属性是全类所共有,比如上例定义的鸟类里的‘有羽毛’和‘繁衍方式’

实例属性是在__init__()中定义的,定义时以self为前缀,且只能通过对象名来反访问。

1.类属性只能通过类对象修改,不能通过实例对象修改

2.如果通过实例对象修改类属性,表示的是创建了一个实例属性

        2.2 修改和增加类属性

通过“类名.属性名”

class Bird:
    有羽毛 = True
    繁衍方式 = '蛋生'
    def fly(self):
        print('飞行')
Bird.有羽毛 = '不一定' #修改类属性
Bird.叫声 = '叽叽喳喳' #添加类属性
        2.3 属性的访问权限

分为共有属性,保护属性(单下划线访问),私有属性(双下划线访问)

私有属性只有类本身可以访问

class Person:
    def __init__(self,n,w):  # 定义实例属性的方法
        self.name=n
        self.__weight=w   # 定义私有属性以千克为单位的体重weight
pa=Person("Lily",50)
print("姓名为",pa.name,",体重为",pa__weight,"千克")

 运行结果:私有属性不能访问

Traceback (most recent call last):
  File "D:\Projects\Pycharm projects\pythonProject\main.py", line 9, in <module>
    print("姓名为",pa.name,",体重为",pa.__weight,"千克")
AttributeError: 'Person' object has no attribute '__weight'

但在python中,可以使用对象名._类名__私有属性名”直接访问私有属性

class Person:
    def __init__(self,n,w):  # 定义实例属性的方法
        self.name=n
        self.__weight=w   # 定义私有属性以千克为单位的体重weight
pa=Person("Lily",50)
print("姓名为",pa.name,",体重为",pa._Person__weight,"千克") #访问私有成员

运行结果:

姓名为 Lily ,体重为 50 千克

 3.类的实例方法及访问权限

分为公有方法、保护方法(以单下划线开头)、私有方法(以双下划线开头)

 1.私有方法只能在类的内部调用

class MyClass:

    def public(self):
        print("这是公有方法")
        self.__private()  # 私有方法只能在类的内部被调用

    def __private(self):
        print("这是私有方法")
a = MyClass()
a.public()
这是公有方法
这是私有方法

2.在类的外部调用私有方法会报错

class MyClass:

    def public(self):
        print("这是公有方法")
    def __private(self):
        print("这是私有方法")
a = MyClass()
a.public()
a.__private()  # 在外部调用私有方法

Traceback (most recent call last):
  File "D:\Projects\Pycharm projects\pythonProject\main.py", line 9, in <module>
    a.__private()  # 在外部调用私有方法
AttributeError: 'MyClass' object has no attribute '__private'
这是公有方法

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值