Python基础语法

变量

int

整数,默认4个字节,自动增长

float

双精度浮点数,8个字节

bool

布尔类型,True / False,1个字节

str

字符串,单引号与双引号都可以表示,没有区别

type

可以打印变量类型。

print(type(1))
print(type(1.1))
print(type(True))
print(type('1' + "1"))

<class 'int'>
<class 'float'>
<class 'bool'>
<class 'str'>

len

可以打印字符串长度。

print(len("国家"))

2

动态变量

在Python中,变量不需要显示指定,而是在赋值的时候确定的。

在Python中,变量类型为动态类型,可以在程序运行过程中发生改变。

代码示例:

a = 1
print(type(a))
a = True
print(type(a))

<class 'int'>
<class 'bool'>

str常用api

# 翻转字符串,使用切割,拼接
s = 'I am a student'
l = s.split() # 返回列表
l.reverse()
sr = ' '.join(l) # 拼接字符串
print(sr) # student a am I
# 判断是否是子串
s = 'abcde'
print('bcd' in s)  # True
print('bbc' in s)  # False
# 判断是否是字符串前缀
s = 'abcde'
print(s.startswith('ab'))  # True
print(s.startswith('ba'))  # False

注释

行注释

#开头 

# 这是一行注释

文档注释

""" 或 ''' 三引号

"""

这是文档注释

"""

类型转换

使用int(), float(), bool(), str() 函数返回对应类型的转换。

print(type(int("1")))
print(type(float("1.1")))
print(type(bool("True")))
print(type(str(123)))

<class 'int'>
<class 'float'>
<class 'bool'>
<class 'str'>

输入输出

Python中使用print函数输出到控制台

print("hello")

字符串和变量混合输入,使用格式化字符串f-string,使用{ }内嵌变量或表达式。

num = 3
print(f"a = {num}")

a = 3

Python中使用input函数从控制台读取输入。

input函数返回值为str,因此需要使用类型转换。

a = int(input("输入第一个整数"))
b = int(input("输入第二个整数"))
print(f"a + b = {a + b}")

输入第一个整数1
输入第二个整数2
a + b = 3

运算符

算术运算符

普通运算符

+ - * / %

Python中%取余结果为绝对值,不会出现负数,与其他语言不用。

新增运算符

** 乘方

// 地板除法,使用向下取整

Python中的除法算出来是小数,而地板除法算出来是向下取整的整数。

print(3 ** 2)
print(4 ** 0.5)
print(3 / 2)
print(3 // 2)
print(-3 // 2)

9
2.0
1.5
1
-2

关系运算符

<  <=  >  >=  ==  !=,同其他语言一致。

Python在语法上支持连续比较。

print(1 < 2 < 3)

True

逻辑运算符

and or not,Python不支持&&,||,!,使用符号同其他语言不同,作用一致也是短路执行。

print(1 < 2 and 2 < 3) # 等价与1 < 2 < 3
print(1 < 2 or 2 > 3)
print(not 1 == 1)
# 这里是短路与,因此除0并不会执行
print(2 < 1 and 10 / 0 == 0)

True
True
False
False

赋值运算符

链式赋值

Python中支持连续赋值。

a = b = 1

多元赋值

a, b = 1, 2
print(f"a = {a},b = {b}")
# 交换变量
a, b = b, a
print(f"a = {a},b = {b}")

a = 1,b = 2
a = 2,b = 1

复合赋值

+=  -=  *=  /=  %=  **=  //=

Python中不支持 ++ -- 操作符,使用 +=1 -=1 代替。

条件语句

Python中条件语句中的代码块使用缩进(Tab)来表示,而不是{}。

a = int(input("请输入一个整数:"))
if a > 0:
    print("正数")
elif a == 0:
    print("0")
else:
    print("负数")

Python条件语法不支持空行,因此空语句用pass表示。

if True:
    pass

循环语句

while

# 打印 1-10
num = 1
while num <= 10:
    print(num)
    num += 1

for

# 打印 1-10
for i in range(1,11):
    print(i)

range函数返回可迭代对象(内部包含多个元素依次取出来的特殊变量),区间范围前闭后开。

range函数第三个参数表示步长,默认为+1,如果倒着遍历,需要显示传-1.

for i in range(10,0,-1):
    print(i)

continue、break

循环跳过、循环结束与其他语言一致。

while True:
    a = int(input("请输入一个偶数: "))
    if a % 2 == 0:
        break
    else:
        continue

函数

语法

函数定义要写在调用之前,同C++一致。

Python中变量类型是动态类型,因此函数形参类型也是可变的。

def add(a, b):
    return a + b


print(add(1, 2)) # 3
print(add(1.1, 2.2)) # 3.3
print(add("a", "b")) # ab

# 强制类型声明和返回值声明,只是形式上的声明,增强可读性,实际执行还是会自动推导
def add(a: int, b: int) -> int:
    """
    two number execute add
    :param a: int
    :param b: int
    :return: int
    """
    return a + b

返回值

函数支持一次返回多个值,用 , 分割。

如果不需要部分返回值,可以使用 _ 忽略返回值。

def point():
    x = 1
    y = 2
    return x, y


a, b = point() # 1 2
_, d = point() # 2

作用域

函数内部定义变量是局部性原则。如果要修改全局变量,需要使用global声明变量。

a = 1
b = 1

def update():
    global a
    a = 2
    b = 2

update()
print(a, b) # 2 1

Python中 if / while / for 中定义变量都是全局变量,出了作用域还在,与其他语言不同。

if True:
    a = 1
for b in range(1,3):
    pass
while True:
    c = 3
    break

print(f"a = {a}, b = {b}, c = {c}") # a = 1, b = 2, c = 3

参数默认值

参数默认值同C++一致,要放在最后,不可以放在形参之前。

def execute(a, b, ret=True):
    if ret:
        return a
    return b

print(execute(1,2)) # 1

关键字参数

同其他语言不用,例如C++,Java中只能是按顺序的位置参数。

而Python中可以显示指定实参传递给哪个形参。

def sub(a, b):
    return a - b

print(sub(b = 2, a = 1)) # -1

也可以和参数默认值混合使用,但关键字参数要写在位置参数之后。

def calc(a, b, add=True, sub=False, multiply=False, divide=False):
    if sub:
        return a - b
    elif multiply:
        return a * b
    elif divide:
        return a / b
    elif add:
        return a + b


print(calc(1, 2, multiply=True)) # 2

列表list

语法

列表用 [] 或 list() 来创建,元素类型没有限制,可以存放不同类型。数据结构是顺序表。

index,pop,remove,a[0] 等操作使用前需要先判断,否则越界或不存在会报错。

# 创建列表
a = [1, 2, 3]
b = ['a', 1.1, True]
c = list()
print(a, b, c)  # [1, 2, 3] ['a', 1.1, True] []
# 查询列表元素是否存在
print(1 in a)  # True
print(100 not in a)  # True
# 查询元素下标
print(a.index(1)) # 0
# 新增元素
a.append(4)       # [1, 2, 3, 4]
a.insert(-1, 40)  # [1, 2, 3, 40, 4]
# 删除元素
# pop按下标删除,不指定下标删除最后一个,remove从左开始删除第一个匹配元素
a.pop(2)          # [1, 2, 40, 4]
a.remove(4)       # [1, 2, 40]
a.pop()           # [1, 2]
# 修改元素
a[0] = 10         # [10, 2]
# 拼接列表
b = ['a', True, 8.8]
#  a += b 这种并不高效,需要开辟新的列表空间,再重新赋值
a.extend(b)       # [10, 2, 'a', True, 8.8]

切片操作

边界范围为前闭后开,边界范围超出按已有元素输出,不会报错。

a = [1, 2, 3, 4]
print(a[0:4])     # [1, 2, 3, 4]
print(a[:4])      # [1, 2, 3, 4]
print(a[:])       # [1, 2, 3, 4]
# 在第二个冒号后面可以指定步长,符号控制方向
print(a[::2])     # [1, 3]
print(a[::-2])    # [4, 2]

遍历

列表本身就是一个可迭代对象,默认支持循环语法。

# 按元素遍历
for item in a:
    print(item)
# 按下标遍历
for i in range(0,len(a)):
    print(a[i])

元组tuple

元组用 () 或 tuple() 来创建,元素类型没有限制,可以存放不同类型。

元组一旦创建就不能修改元素,相当于常量列表,接口同列表一致,但相关修改方法都不能使用。

a = (1, 2, 3)
b = ('a', 1.1, True)
c = tuple()
print(a, b, c)  # (1, 2, 3) ('a', 1.1, True) ()

元组可以省略括号,Python中函数返回多个参数就是元组。

a = 2
b = 3
c = 4
d = a, b, c
print(d)  # (2, 3, 4)

集合set

集合是无序不重复的,数据结构是哈希表。

集合用 {} 或 set() 来创建。

语法

a = set()
# True就是1,如果 1 和 True同时出现,只会存在1
b = {1, 'a', 'b', True}
a.add(2)
a.add('b')
b.remove('a')
print(a, b)  # {'b', 2} {1, 'b'}

字典dict

语法

字典是键值对结构,类似map,数据结构是哈希表。

字典用 {} 或 dict() 来创建,元素类型没有限制,可以存放不同类型。

如果key不存在,使用 [] 获取value,pop删除key都会报错,get获取value会返回None。

# 创建字典
a = {
    "name": "jack",
    1: True,
}
b = dict()
print(a, b)  # {'name': 'jack', 1: True} {}
# 查找key
print(1 in a)  # True
print(1.1 not in a)  # True
# 新增key,key不存在是新增,存在则是修改
a["age"] = 20
a[1] = False
print(a)  # {'name': 'jack', 1: False, 'age': 20}
# 获取value
# print(a[“usage”]) # 报错
print(a.get("usage"))  # None
# 删除key
# a.pop("usage") # 报错
a.pop("age")
print(a)  # {'name': 'jack', 1: False}

遍历

字典遍历同其他语言哈希表不同,字典经过特殊处理,遍历按照key插入顺序,而不是哈希值。

print(a.keys())  # dict_keys(['name', 1])
print(a.values())  # dict_values(['jack', False])
print(a.items())  # dict_items([('name', 'jack'), (1, False)])
# 遍历key
for key in a:
    print(key)
# 遍历key与value
for key, value in a.items():
    print(key, value)

合法key

字典中的key需要支持hash函数计算哈希值,列表和字典由于是可变的,所以不支持作为key。

文件操作

# 打开文件,第一个参数是文件路径
# 第二个参数表示打开方式. r 只读,w 只写,a 追加
f = open("test.txt", "r", encoding="utf-8")

# 读文件
print(f.readline())  # hello\n
print(f.readlines())  # ['hello\n', 'world']
for line in f:
    print(line, end='')  # hello world

# 写文件
f1 = open("test1.txt", "w")
f1.write("abcd")

# 关闭文件
f.close()
f1.close()

上下文管理器

# with内部的代码块执行完毕,自动调用f.close关闭文件
def file_test():
    with open("test.txt", "r") as f:
        print(f.readlines())

file_test()

标准库

https://docs.python.org/3.10/library/index.htm

模块

语法

所谓 "模块" , 其实就是一个单独的 .py 文件.

使用 import 语句可以把这个外部的 .py 文件导入到当前 .py 文件中, 并执行其中的代码.

导入calc.py,代码示例:

import calc

print(calc.add(1, 2))
print(calc.sub(1, 2))

常用模块使用

 随机数 random

# 生成随机数 1 - 3
r = random.randint(1, 3)

线程休眠 time

# 单位秒
time.sleep(1)

多线程 threading

from threading import Thread

def self_print(s):
    for i in range(1, 10):
        time.sleep(1)
        print(s)

t = Thread(target=self_print, args=(1,))
t.start()
t.join()

日期 datetime

from datetime import datetime

d1 = datetime(2024, 3, 15)
d2 = datetime(2022, 1, 1)
print(d1 - d2)  # 804 days, 0:00:00

文件查找 os

path = input("输入搜索路径")
pattern = input("输入关键字")
for dirpath, dirnames, filenames in os.walk(path):
    print("-------------------------")
    print(dirpath)
    for dirname in dirnames:
        print(dirname)
    for filename in filenames:
        print(filename)

第三方库

pip是Python内置的包管理器,Python官方提供了一个网站PyPI https://pypi.org/ 来收集第三方库。

pip install [库名]

二维码生成

pip install "qrcode[pil]"
b = qrcode.make("test")
b.save('test.png')

操作Excel

pip install xlrd==1.2.0
# 打开文件
xlsx = xlrd.open_workbook("test.xlsx")
# 获取标签页
for table in xlsx.sheets():
    # 遍历数据
    for row in range(1, table.nrows):
        for column in range(0, table.ncols):
            print(table.cell_value(row, column))

监听键盘

pip install pynput==1.6.8
from pynput import keyboard

def keyReleaseEvent(key):
    print(key)

listener = keyboard.Listener(on_release=keyReleaseEvent)
listener.start()
listener.join()
listener.stop()

操作音频

pip install playsound==1.2.2
from playsound import playsound

playsound('1.mp3')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值