第24篇 python基础

Python的基础语法相当简洁明了,以下是一些关键点及其简单案例分析:### 1. **标识符**
- 标识符是用来给变量、函数、类等命名的名称,必须以字母(包括Unicode字符)、下划线 `_` 或者非数字字符开头,后面可以跟任意数量的字母、数字或下划线。
   ```python
 

  # 正确的标识符my_variable = 10_private_var = 'hidden value'class MyClass:pass# 错误的标识符,因为以数字开头1var = 'This will cause an error'

   ```### 2. **变量声明与赋值**
- 在Python中,不需要显式声明变量类型,直接赋值即可创建变量。
   ```python

   x = 123  # 整数y = 3.14  # 浮点数name = "Alice"  # 字符串is_active = True  # 布尔值# 多变量同时赋值a, b, c = 1, 2, "three"


   ```### 3. **数据类型**
- Python支持多种内建数据类型,如整型(int)、浮点型(float)、字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)等。
   ```python
 

 list_example = [1, 2, 3, "four"]tuple_example = (5, 6, "seven")dict_example = {"name": "Bob", "age": 30}set_example = {8, 9, "ten"}# 数据类型转换int_number = int("123")  # 字符串转整数str_text = str(456)  # 整数转字符串


   ```### 4. **条件语句和循环**
- `if...elif...else` 结构用于条件判断。
   ```python

   score = 85if score >= 90:print("优秀")elif score >= 60:print("及格")else:print("不及格")for i in range(5):print(i)  # 输出0到4while score < 100:print("继续努力")score += 10


   ```### 5. **函数定义**
- 函数使用`def`关键字定义。
   ```python

   def greet(name):print(f"Hello, {name}!")greet("World")  # 输出: Hello, World!


   ```### 6. **模块导入**
- 可以使用`import`语句导入模块或特定功能。
   ```python
 

  import mathprint(math.sqrt(16))  # 输出: 4.0from datetime import datetimenow = datetime.now()print(now)


   ```

### 7. **注释**
- 单行注释以`#`开始。
   ```python
 

 # 这是一个单行注释


   ```

- 多行注释可以用三个单引号(`'''`)或三个双引号(`"""`)包裹。
   ```python
   '''
   这是一个多行注释,
   可以跨越多行。
   '''
   ```

以上仅为Python基础语法的部分要点和案例,实际使用中还有更多复杂的结构和概念,比如异常处理、类与对象、列表推导式、生成器表达式、装饰器等。通过不断实践和深入学习,可以逐步掌握这些高级特性。

当然,我们还可以进一步探讨一些更深层次的Python特性和应用案例:### 8. **列表推导式**
- 列表推导式是一种简洁地创建新列表的方式,基于现有可迭代对象或其它表达式。
   ```python
 

 numbers = [1, 2, 3, 4, 5]squared_numbers = [n**2 for n in numbers]print(squared_numbers)  # 输出: [1, 4, 9, 16, 25]# 同时包含条件过滤even_squared_numbers = [n**2 for n in numbers if n % 2 == 0]print(even_squared_numbers)  # 输出: [4, 16]


   ```

### 9. **字典推导式**
- 类似于列表推导式,字典推导式用于快速创建字典。
   ```python
 

  keys = ['a', 'b', 'c']values = [1, 2, 3]dictionary = {k: v for k, v in zip(keys, values)}print(dictionary)  # 输出: {'a': 1, 'b': 2, 'c': 3}


   ```

### 10. **匿名函数(Lambda函数)**
- Lambda函数用于创建简短、一次性使用的函数,无需定义完整的函数体。
   ```python
 

 add_one = lambda x: x + 1result = add_one(5)print(result)  # 输出: 6


   ```### 11. **迭代器与生成器**
- 迭代器是实现了`__iter__()`和`__next__()`方法的对象,可以通过for循环遍历。
- 生成器是一种特殊的迭代器,但更高效,因为它在需要时生成值,而不是一次性生成所有值并存储。
   ```python
 

  # 生成器函数def odd_numbers(n):i = 1while i <= n:yield ii += 2for number in odd_numbers(10):print(number)  # 输出: 1, 3, 5, 7, 9```### 12. **类与面向对象编程**
- 在Python中,类用于创建自定义对象类型,支持继承、封装和多态。```pythonclass Person:def __init__(self, name, age):self.name = nameself.age = agedef introduce(self):print(f"My name is {self.name} and I am {self.age} years old.")p = Person("Alice", 30)p.introduce()  # 输出: My name is Alice and I am 30 years old.


   ```

通过掌握上述基本语法和这些较为进阶的概念,开发者能够编写出更高效、更具表现力的Python代码。而Python丰富的标准库和第三方库更是极大地扩展了其应用领域,使得它成为科学计算、数据分析、Web开发等多种场景的理想选择。

### 13. **模块化与包**
- Python 支持模块化编程,允许将代码组织成多个文件,每个文件作为一个模块。模块可以导入到其他脚本中重复使用,提高代码的复用性。```python
# 文件名为 math_operations.py

def add(x, y):return x + ydef subtract(x, y):return x - y

# 在另一个脚本中导入并使用该模块

import math_operationsresult = math_operations.add(5, 3)
print(result)  # 输出: 8


```### 14. **命名空间与作用域**
- 命名空间是一个存储变量名称及其对应对象映射的结构,Python 中有全局作用域、局部作用域以及嵌套作用域。
- 当在一个函数内部定义一个变量时,这个变量在该函数内部具有局部作用域;如果在函数外部定义,则具有全局作用域。
   ```python

   global_var = "Global"def func():local_var = "Local"print(global_var)  # 可以访问全局变量print(local_var)  # 输出 Localfunc()print(local_var)  # 报错,因为local_var只在func作用域内有效


   ```### 15. **装饰器(Decorators)**
- 装饰器是 Python 中一种强大的工具,它可以修改或增强函数的行为,同时保留函数的原始接口。
   ```python

   def my_decorator(func):def wrapper(*args, **kwargs):print("Before function call.")result = func(*args, **kwargs)print("After function call.")return resultreturn wrapper@my_decoratordef say_hello(name):print(f"Hello, {name}!")say_hello("World")  # 输出:# Before function call.# Hello, World!# After function call.


   ```### 16. **上下文管理器与 `with` 语句**
- 上下文管理器通常通过实现 `__enter__` 和 `__exit__` 方法来确保资源的正确打开和关闭,从而简化异常处理和资源清理工作。
   ```python
   

class ManagedFile:def __init__(self, filename):self.filename = filenamedef __enter__(self):self.file = open(self.filename, 'r')return self.filedef __exit__(self, exc_type, exc_val, exc_tb):self.file.close()with ManagedFile('example.txt') as f:content = f.read()print(content)  # 在 `with` 语句结束时,文件会自动关闭


   ```

深入理解以上概念后,开发者能够更加熟练地驾驭Python语言,并利用其特性构建复杂且健壮的应用程序。此外,Python还有诸如协程(coroutine)、元类(metaclass)、异步IO(asyncio)等高级特性,它们在特定场景下提供了更高的性能和灵活性。

### 17. **异常处理**
- Python 使用 try/except/finally 结构进行异常处理,确保在遇到错误时程序能正常执行或进行适当的错误恢复。```python

try:# 尝试执行可能会抛出异常的代码divide_by_zero = 1 / 0
except ZeroDivisionError:# 如果捕获到 ZeroDivisionError 异常,则执行此块代码print("Cannot divide by zero!")
finally:# 不论是否发生异常,都会执行 finally 块中的代码print("This block always executes.")# 更加详细的异常处理可以指定多种异常类型
try:...
except ZeroDivisionError:handle_zero_division()
except FileNotFoundError:handle_file_not_found()
except Exception as e:print(f"An unexpected error occurred: {e}")


```

### 18. **文件操作**
- Python 提供了一系列内置函数和方法来进行文件读写操作。```python

# 打开一个文件进行写入
with open('output.txt', 'w') as f:f.write("Hello, world!\n")# 打开一个文件进行读取
with open('input.txt', 'r') as f:content = f.read()print(content)# 写入多行内容
lines = ["Line 1", "Line 2", "Line 3"]
with open('output.txt', 'w') as f:for line in lines:f.write(line + '\n')# 逐行读取文件
with open('input.txt', 'r') as f:for line in f:process_line(line.strip())


```

### 19. **正则表达式**
- Python 的 re 模块提供了对正则表达式的强大支持,可用于文本搜索、替换、提取等操作。```python

import retext = "The quick brown fox jumps over the lazy dog."# 匹配单词“fox”
match = re.search(r'fox', text)
if match:print(match.group())# 替换匹配项
new_text = re.sub(r'fox', 'cat', text)
print(new_text)


```

### 20. **并发与多线程**
- Python 提供了 threading 模块支持多线程编程,以及 asyncio 库支持异步编程。```python

import threadingdef worker(num):"""thread worker function"""print(f"Worker: {num}")threads = []
for i in range(5):t = threading.Thread(target=worker, args=(i,))threads.append(t)t.start()# 确保所有线程完成后再继续
for t in threads:t.join()# 异步示例
import asyncioasync def my_coroutine():await asyncio.sleep(1)print("Coroutine finished")async def main():task = asyncio.create_task(my_coroutine())print("Doing something else...")await taskasyncio.run(main())


```

以上就是Python语言的一些核心特性与常见应用场景。Python因其丰富的功能、易读易写的特点以及广泛的社区支持,在众多领域得到了广泛应用。随着对Python深入学习,你会发现更多高级功能和最佳实践,如虚拟环境管理、单元测试、数据科学库、Web框架等等。

### 21. **面向对象编程(OOP)进阶**

- **继承(Inheritance)**:在Python中,一个类可以从已有的类派生出新的类,这种机制称为继承。子类会继承父类的所有属性和方法,并可以根据需要添加或重写自己的属性和方法。```python

class Animal:def __init__(self, name):self.name = namedef speak(self):raise NotImplementedError("Subclass must implement this method")class Dog(Animal):def speak(self):return "Woof!"class Cat(Animal):def speak(self):return "Meow!"dog = Dog("Rex")
print(dog.speak())  # 输出: Woof!cat = Cat("Whiskers")
print(cat.speak())  # 输出: Meow!


```

- **多态(Polymorphism)**:多态允许不同类的对象响应相同的消息时产生不同的行为。在Python中,由于动态类型特性,一个基类引用可以指向其派生类实例,从而实现多态。```python

def animal_speak(animal):return animal.speak()animals = [Dog("Rex"), Cat("Whiskers")]
for animal in animals:print(animal_speak(animal))


```

### 22. **元类(Metaclasses)**
- 元类是类的类,用来控制类的创建行为。它们很少在常规编程中使用,但在某些高级应用场景如框架设计、模块系统中非常有用。```python

class Meta(type):def __new__(meta, name, bases, dct):print(f"Creating class {name}")return super().__new__(meta, name, bases, dct)class MyClass(metaclass=Meta):pass# 输出: Creating class MyClass


```

### 23. **类型提示(Type Hints)**
- Python 3.5及以上版本引入了类型提示,有助于静态检查工具提供更好的代码分析和IDE提供更好的智能感知。```python

def calculate_area(radius: float) -> float:return 3.14 * radius ** 2radius = 5.0
area = calculate_area(radius)


```

### 24. **单元测试**
- Python的unittest模块提供了编写和运行单元测试的功能,确保代码的稳定性和可靠性。```python

import unittestclass TestCalculator(unittest.TestCase):def test_addition(self):calculator = Calculator()self.assertEqual(calculator.add(2, 3), 5)if __name__ == "__main__":unittest.main()


```

以上介绍了更多Python的进阶特性,随着对Python的深入学习和实践,你还会接触到更多高级主题,如异步I/O、数据库操作、网络编程、并发模型、分布式计算等,帮助你在各种复杂项目中发挥Python的强大能力。

### 25. **异步编程(Asynchronous Programming)**

- 自从Python 3.5引入了`asyncio`库以来,异步编程在Python中变得越来越重要,尤其是在处理高并发I/O密集型任务时。通过`async`和`await`关键字,Python实现了协程(Coroutines)。```python

import asyncioasync def my_coroutine():print("Coroutine started")await asyncio.sleep(1)  # 异步等待1秒print("Coroutine finished")async def main():task = asyncio.create_task(my_coroutine())print("Doing something else...")await task# 使用asyncio.run()启动事件循环并运行主协程
asyncio.run(main())


```

### 26. **虚拟环境(Virtual Environments)**

- 虚拟环境是隔离不同项目之间Python依赖的一种方法,避免了不同项目间的库版本冲突。Python自带`venv`模块可以创建和管理虚拟环境。

```bash
# 创建一个新的虚拟环境

python3 -m venv my_venv

# 激活虚拟环境(Windows)

my_venv\Scripts\activate.bat

# 激活虚拟环境(Unix/Linux/MacOS)

source my_venv/bin/activate

# 在激活的虚拟环境中安装包

pip install requests

# 退出虚拟环境

deactivate


```

### 27. **数据科学与机器学习**

- Python拥有丰富且强大的数据科学库,如NumPy(数组处理)、Pandas(数据处理)、Matplotlib(数据可视化)、Scikit-Learn(机器学习)等。```python

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression# 加载数据
data = pd.read_csv('data.csv')# 数据预处理
X = data[['feature1', 'feature2']]
y = data['target']# 训练线性回归模型
model = LinearRegression()
model.fit(X, y)# 预测
predictions = model.predict(X)


```

### 28. **Web框架**

- Python拥有多款优秀的Web框架,其中Flask和Django最为知名。它们可以帮助开发者快速构建功能齐全的Web应用程序。```python
# Flask示例

from flask import Flask, requestapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run()# Django示例
from django.http import HttpResponse
from django.urls import path
from django.shortcuts import renderdef home_view(request):return HttpResponse("Welcome to Django!")urlpatterns = [path('', home_view, name='home'),
]# 更多配置设置,如设置模板、数据库、视图等


```

以上涵盖了Python编程中的几个关键领域,Python作为一门功能全面的编程语言,其适用范围广泛,无论是在系统脚本、Web开发、数据科学还是人工智能等领域都有出色的表现。持续探索和学习Python,将会解锁更多的开发技巧和应用场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/2201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

主打国产算力 广州市通用人工智能公共算力中心项目签约

4月9日&#xff0c;第十届广州国际投资年会期间&#xff0c;企商在线&#xff08;北京&#xff09;数据技术股份有限公司与广州市增城区政府就“广州市通用人工智能公共算力中心”项目进行签约。 该项目由广州市增城区人民政府发起&#xff0c;企商在线承建。项目拟建成中国最…

JS-37-jQuery06-ajax

用JavaScript写AJAX前面已经介绍过了&#xff0c;主要问题就是不同浏览器需要写不同代码&#xff0c;并且状态和错误处理写起来很麻烦。 用JavaScript写AJAX 用jQuery的相关对象来处理AJAX&#xff0c;不但不需要考虑浏览器问题&#xff0c;代码也能大大简化。 一、ajax()函数…

RK3568 android11 修改关机弹窗界面

需要修改关机弹窗界面&#xff0c;当前界面我已经按照客户需求去掉emergency 但是客户需要按其他区域可以实现返回&#xff0c;也就是点击黑色背景取消dialog 嗑代码发现黑色布局为&#xff1a; <node index"0" text"" resource-id"com.android.…

逆向修改app就可以游戏充值到账?

hello ,大家好, 现在市场仍然流行着非常多的传奇类游戏私服或者其他类型的游戏私服,随着私服越来越多(很多并不合法),越来越多的人加入了破解,逆向修改,或者代充的队伍并从中获利。这里我给大家分享一下这些做代充的常规的做法,以及大家作为游戏服务器如何避坑做强校验…

c#开发vs2022安装地址

C#学习visual Studio 2022安装与配置详细过程_vs2022怎么配置c#环境-CSDN博客

CSS基础:最详细 padding的 4 种用法解析

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃&#xff0c;大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 We…

Java8 中map中删除元素的简单方法

通过values删除 map.values().removeIf(value -> !value.contains("1"));通过keySet删除 map.keySet().removeIf(key -> key ! 1);通过entrySet删除 map.entrySet().removeIf(entry -> entry.getKey() ! 1);

编写一款2D CAD/CAM软件(十四)绘制工具栏

前面的文章已经封装了数个最基本的图元&#xff0c;但是视图的呈现是基于测试数据形成的。为了尽快完善软件交互的框架和能力&#xff0c;本文将增加工具栏。 资源文件 1.首先&#xff0c;创建按钮图标。使用绘图软件构建出工具栏按钮的图标&#xff0c;绘图软件多种多样&…

Vue之v-on事件修饰符的含义及使用

背景&#xff1a;Vue 拆封了一个组件&#xff0c;在组件里面会使用一个方法来改变父组件传过来的值&#xff0c; 但是在子组件里面操作父组件的数据变更&#xff0c;实在比较麻烦&#xff08;因为单向数据流&#xff09;&#xff0c; So 能不能直接在组件上面绑定事件方法呢&…

Nest 快速上手 —— (一)nest介绍与启动安装

参考资料&#xff1a;https://docs.nestjs.com/ 0.介绍 Nest (NestJS)是一个用于构建高效、可扩展的Node.js服务器端应用程序的框架。它使用渐进式JavaScript&#xff0c;构建并完全支持TypeScript(但仍然允许开发人员使用纯JavaScript编写代码)&#xff0c;并结合了OOP(面向对…

HCIP【路由过滤、路由引入实验】

目录 实验要求&#xff1a; 实验拓扑图&#xff1a; 实验思路&#xff1a; 实验步骤&#xff1a; 一、配IP地址 二、在相应的设备上配置RIP协议和OSPF协议 三、路由引入 四、路由过滤 五、配置静默接口 实验要求&#xff1a; 1、按照图示配置 IP 地址&#xff0c;R1&a…

网络靶场实战-Qiling Fuzz实例分析

背景 在上一小节中&#xff0c;介绍了qiling框架的背景和基础使用&#xff0c;并以相关的CTF和qilinglab实例进行练习加深对qiling框架的使用&#xff0c;后续并简单介绍了qiling fuzz的功能。 在这一小节&#xff0c;我们将对qiling fuzz iot设备进行测试以及以实例的方式对…

FineReport报表问题- SET LOGSIZE FAILED 解决

1.问题描述 Oops!!!非常抱歉&#xff0c;您当前无法访问此页。 发生的问题是&#xff1a;CREATE EMB-DB: SET LOGSIZE FAILED! 详细信息 java.lang.RuntimeException: CREATE EMB-DB: SET LOGSIZE FAILED!<br> at com.fr.data.core.db.DBUtils.getEmbeddedDB(Unknown So…

C++ 面向对象-封装

C 是一种多范式编程语言&#xff0c;它支持面向对象编程&#xff08;OOP&#xff09;范式。面向对象编程是一种程序设计思想&#xff0c;其中程序由对象组成&#xff0c;每个对象都是一个实例&#xff0c;具有数据和相关操作。在C中&#xff0c;实现面向对象编程主要通过类和对…

蓝桥杯2022年第十三届决赛真题-卡牌

贪心&#xff1a;循环m次&#xff0c;首先每次取卡片数最少的种类&#xff0c;判断它是否有补充机会&#xff0c;如果没有补充机会&#xff0c;根据短板效应&#xff0c;它的数量就是套牌数&#xff0c;结束。如果可以补充&#xff0c;就将它的数目增加1&#xff0c;m的数量减少…

ubuntu22.04搭建dns内网

近期&#xff0c;需要在无网络的ubuntu环境下搭建内部可用的dns内网&#xff0c;总共花费3个工作日晚上&#xff0c;总算成功搭建&#xff0c;做个记录&#xff0c;记录踩坑记录&#xff0c;同时方便以后翻阅。 安装软件包&#xff1a; 有网络环境下&#xff0c;比较简单&…

一个java项目中,如何使用sse协议,构造一个chatgpt的流式对话接口

前言 如何注册chatGPT&#xff0c;怎么和它交互&#xff0c;本文就不讲了&#xff1b;因为网上教程一大堆&#xff0c;而且你要使用的话&#xff0c;通常会再包一个算法服务&#xff0c;用来做一些数据训练和过滤处理之类的&#xff0c;业务服务基本不会直接与原生chatGPT交互。…

[Android]Jetpack Compose自定义主题

1.ColorScheme ColorScheme 是 Jetpack Compose 中的一个类&#xff0c;用于定义一组颜色&#xff0c;这些颜色共同构成了应用程序的颜色主题。在 Material Design 系统中&#xff0c;颜色方案帮助确保应用程序具有一致的视觉外观&#xff0c;同时也支持色彩的可访问性和美观性…

Lambda 禁止直接从公网访问

为了禁止 Lambda 直接从公网访问&#xff0c;您可以执行以下步骤&#xff1a; 更新 Lambda 函数的策略&#xff1a; 登录 AWS 控制台&#xff0c;导航至 Lambda 服务。找到需要修改的 Lambda 函数&#xff0c;并进入其配置页面。在函数配置页面&#xff0c;找到与 Lambda 函数…

7-17 KMP模式匹配算法

给定主串s和模式串p&#xff0c;编写程序使用KMP算法进行模式匹配&#xff0c;计算p在s中出现的首位置&#xff0c;若p不在s中则输出−1。字符串下标从0开始。 输入格式: 输入为2行&#xff0c;第1行为主串s&#xff0c;第2行为模式串p。主串和模式串长度不超过105。 输出格…