Python基础(持续更新)
admin
2024-05-03 10:52:02
0

1 函数

1.1 函数定义

1)输出字符串“Hello World!":

def hello():print("Hello World!")

2)比较两个数,并返回较大的数

def max(a,b):if a > b:return aelse:return b

1.2 函数调用

hello()

运行结果:

Hello World!

a = 10
b = 20
print(max(a,b))

运行结果:

20

1.3 参数传递

  • 在python中,类型属于对象,对象有不同类型的区分,变量是没有类型的。
  • 在python中,strings, tuples和numbers是不可更改的对象,而list和dict等则是可以修改的对象。

1.3.1 不可变类型

类似C++的值传递,如整数、字符串、元组。传递的只是对象的值,没有影响被传递对象本身。

def swap(a,b):z = aa = bb = za = 5
b = 10
swap(a, b)
print(a)
print(b)

运行结果:

5
10

1.3.2 可变类型

类似C++的引用传递,如列表、字典。

def changelist(mylist):mylist.append([1,2,3,4])   return mylist=[10,20,30]
changelist(mylist)
print(mylist)

运行结果:

[10,20,30,[1,2,3,4]]

1.4 参数

  • 必须参数
  • 关键字参数
  • 默认参数
  • 不定长参数

1.4.1 必须参数

必须参数须以正确的顺序传入函数,调用时的数量必须和声明时的一样。

def print_str(str):print(str)return print_str("hello")

运行结果:

hello

1.4.2 关键字参数

使用关键字参数允许函数调用时参数的顺序与声明时不一致。

以下实例中函数参数的使用不需要使用指定顺序:

def printInfo(name, age):print("名字:", name)print("年龄:", age)returnprintInfo(age = 50, name = "John")

运行结果:

名字: John
年龄: 50

1.4.3 默认参数

调用函数时,如果没有传递参数,则会使用默认参数。

以下实例,如果没有传入age参数,则使用默认值:

def printInfo(name, age=30):print("名字:", name)print("年龄:", age)returnprintInfo(name = "John")

运行结果:

名字: John
年龄: 30

1.4.4 不定长参数

1)加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

def printInfo(arg1, *vartuple):"打印任何传入的参数"print(arg1)print(vartuple)printInfo(10, 20, 30)

运行结果:

10
(20, 30)

2)加了两个星号 ** 的参数会以字典的形式导入。

def printInfo(arg1, **vardict):"打印任何传入的参数"print(arg1)print(vardict)printInfo(20, a=5, b=8)

运行结果:

20
{‘a’: 5, ‘b’: 8}

1.5 return语句

return[表达式]语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。

2 面向对象

2.1 类定义

1、定义一个Student类

class Student:pass

2、类的构造方法:__ init__(),该方法在类实例化时会自动调用。

3、__ init__()可以有参数,参数通过它传递到类的实例化操作上。

class Student:# 定义基本属性name = ''age = 0score = 0# 定义私有属性,在类外部无法直接进行访问__weight = 0# 定义构造方法def __init__(self, name, age, score):self.name = nameself.age = ageself.score = score# 实例化        
stu = Student("John", 90)

2.2 类的方法

类方法必须包含参数self,且为第一个参数,self代表的是类的实例。

class Person:name = ''age = 0__weight = 0def __init__(self, name, age, weight):self.name = nameself.age = ageself.__weight = weightdef printInfo(self):print("姓名:", self.name)print("年龄:", self.age)# 实例化
p = Person("John", 18, 80)
p.printInfo()

运行结果:

姓名: John
年龄: 18

2.3 继承

继承Person类:

class Student(Person):score = 0def __init__(self, name, age, weight, score):#调用父类的构造函数Person.__init__(self, name, age, weight)self.score = score# 覆盖父类的方法def printInfo(self):print("姓名:", self.name)print("年龄:", self.age)print("分数:", self.score)stu = Student('Ken', 20, 75, 90)
stu.printInfo()

运行结果:

姓名: Ken
年龄: 20
分数: 90

2.4 方法重写

如果父类方法的功能不能满足要求,可以在子类中重写父类的方法,上面子类Student重写了父类Person的方法printInfo()。

3 模块

一个python文件主要有两种使用方法:

1. 作为脚本直接执行
如果作为脚本直接执行,if __ name__ == “__ main__”:语句之前和之后的代码都被执行。

2. import到其他python脚本中被调用
如果import执行,if __ name__ == “__ main__”:语句之前的代码被执行,而之后的代码没有被执行。

4 日期和时间

获取格式化日期和时间的两种方式:
1、通过time模块

import timeprint(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

运行结果:

2022-12-29 16:15:25

2、通过datetime模块

from datetime import datetimeprint(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

运行结果:

2022-12-29 16:14:56

5 文件

1、mode = ‘w’,以写入模式打开文件

# 以w写入模式,创建test.txt
file = open('./test.txt', mode = 'w')# 写入内容
file.write('hello\n')
file.write('world\n')# 关闭文件
file.close()

文本内容为:

hello
world

2、mode = ‘a’,以追加内容模式打开文件

file = open('./test.txt', mode = 'a')
file.write('hello world\n')
file.close()

文本内容为:

hello
world
hello world

3、mode = ‘r’,以只读模式打开文件

file = open('./test.txt', mode = 'r')

读取一行内容:

str = file.readline()
print(str)
str = file.readline()
print(str)
str = file.readline()
print(str)
file.close()

运行结果:

hello
world
hello world

6 多线程

Python3线程中常用的两个模块为:

  • _thread
  • threading(推荐使用)

6.1 使用_thread模块创建线程

调用_thread模块中的start_new_thread()函数来产生新线程:

import _thread
import time# 为线程定义一个函数
def print_time(threadName, delay):count = 0while count < 5:time.sleep(delay)count += 1print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + ' ' + threadName + '\n')# 创建两个线程
try:_thread.start_new_thread(print_time, ("Thread - 1", 2, ))_thread.start_new_thread(print_time, ("Thread - 2", 4, ))
except:print("Error:无法启动线程")

运行结果:

2022-12-29 17:45:43 Thread - 1
2022-12-29 17:45:45 Thread - 2
2022-12-29 17:45:45 Thread - 1
2022-12-29 17:45:47 Thread - 1
2022-12-29 17:45:49 Thread - 2
2022-12-29 17:45:49 Thread - 1
2022-12-29 17:45:51 Thread - 1
2022-12-29 17:45:53 Thread - 2
2022-12-29 17:45:57 Thread - 2
2022-12-29 17:46:01 Thread - 2

6.2 使用threading模块创建线程

import threading
import timeexitFlag = 0class myThread(threading.Thread):def __init__(self, threadID, name, delay):threading.Thread.__init__(self)self.threadID = threadIDself.name = nameself.delay = delaydef run(self):print("开始线程:" + self.name)print_time(self.name, self.delay, 5)print("退出线程:" + self.name)def print_time(threadName, delay, counter):while counter:if exitFlag:threadName.exit()time.sleep(delay)print(threadName + time.strftime(" %Y-%m-%d %H:%M:%S", time.localtime()) + '\n')counter -= 1thread1 = myThread(1, "Thread-1", 2)
thread2 = myThread(2, "Thread-2", 4)thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("退出主线程")

运行结果:

开始线程:Thread-1
开始线程:Thread-2
Thread-1 2022-12-30 09:05:35
Thread-2 2022-12-30 09:05:37
Thread-1 2022-12-30 09:05:37
Thread-1 2022-12-30 09:05:39
Thread-2 2022-12-30 09:05:41
Thread-1 2022-12-30 09:05:41
Thread-1 2022-12-30 09:05:43
退出线程:Thread-1
Thread-2 2022-12-30 09:05:45
Thread-2 2022-12-30 09:05:49
Thread-2 2022-12-30 09:05:53
退出线程:Thread-2
退出主线程

相关内容

热门资讯

AI冲击银行就业!渣打宣布裁员... 人工智能加速渗透金融业,全球银行业就业格局正面临深刻重构。 据英国《金融时报》周二报道,渣打银行首席...
跨境电商圈常说的IP关联到底是... 在跨境电商和海外社媒运营的圈子里,有一个词被提起的频率几乎和“封号”一样高——IP关联。新手听到这个...
今日头条!金茂、金地纷纷下场,... 进入5月,继德通下场拿地之后,今天金茂、金地也纷纷在西安土地市场出手。 截至目前,今年二季度在西安土...
亮成本!5月来中小银行密集响应... 财联社5月19日讯(记者 彭科峰)在央行一季度货币政策执行报告明确发声“持续深化明示企业贷款综合融资...
泰国服装电商市场趋势洞察报告 今天分享的是:泰国服装电商市场趋势洞察报告 报告共计:14页 这份报告聚焦泰国服装电商市场,以Sho...
金饰克价年内大跌300元!从全... 2026年5月16日,国内黄金市场迎来标志性时刻:周生生、老凤祥、老庙黄金等主流品牌足金首饰价格集体...
信达证券股份有限公司 关于召开... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
卫星ETF(159218)连续... 近日,卫星产业链迎来重磅信号。马斯克表示,SpaceX今年或在火箭完全快速可复用性方面取得成功,这将...
国企举报前高管利用职务便利侵吞... 2013年,北京国润水清环境工程有限公司(以下简称“国润公司”)通过招商引资,与当地政府签订郑州市上...
原创 账... 2026年开年至今,印度能源进口账单持续疯狂飙升,彻底击穿了该国的经济防线,多重危机叠加形成致命反噬...
完成喜马拉雅收购,腾讯音乐全员... 转自:贝壳财经 新京报贝壳财经讯(记者韦英姿)5月18日,腾讯音乐发布公告称,根据并购协议的条款,收...
美股三大指数涨跌不一,美光、应... 美股三大指数收盘涨跌不一,纳指跌0.51%,标普500指数跌0.07%,道指涨0.32%。费城半导体...
A股午评:超2900只个股飘绿... 19日,A股三大指数低开,沪指翻红。截至午间收盘,沪指涨0.02%,深证成指跌0.78%,创业板指跌...
如何选择小红书推广服务?效果及... 在当今数字化营销的浪潮中,小红书作为一个极具影响力的社交平台,吸引了众多品牌和企业的关注。对于希望在...
人工智能概念股走弱,创业板人工... 人工智能概念股走弱,天孚通信跌超8%,新易盛跌超6%,中际旭创跌超4%。 受盘面影响,创业板人工智能...
大金重工(002487.SZ)... 览富财经网讯:5月18日,港交所官网显示,大金重工股份有限公司(大金重工)已递交聆讯后资料集,登陆香...
深演智能将在港上市:业绩下滑明... 来源|贝多商业&贝多财经 5月18日,北京深演智能科技股份有限公司(下称“深演智能”,HK:0272...
退税更省心、更省时、更省事,六... 离境退税政策2.0版“上线”。5月18日,商务部、财政部、国家税务总局等六部门发布《关于加力优化离境...
原创 全... 美国总喜欢卡别人脖子,挥舞制裁大棒,如今却面临被制裁的问题,尤其是在稀土领域。 在2025年4月,中...
芯片、存储概念股下挫!美光科技... 【导读】美股三大指数涨跌不一。芯片、存储概念股下挫,美光科技大跌近6% 中国基金报记者 伊万 美东时...