Python编程进阶:循环结构、函数与面向对象编程
作者:佩奇在吗 | 来源:互联网 | 2024-12-25 15:48
本文深入探讨了Python中的循环结构(包括for循环和while循环)、函数定义与调用,以及面向对象编程的基础概念。通过详细解释和代码示例,帮助读者更好地理解和应用这些核心编程元素。
### 循环结构
#### For 循环
`for` 循环适用于已知迭代次数的情况。它会遍历一个可迭代对象(如列表、元组或字符串),并在每次迭代中执行指定的代码块。在 C/C++ 中,`for` 循环的语法如下:
```cpp
for (int i = 0; i <10; ++i) {
cout <}
```
而在 Python 中,同样的逻辑可以简化为:
```python
for i in range(10):
print(i)
```
这里,`range(n)` 函数生成从 0 到 n-1 的整数序列。例如,`range(10)` 等价于 `[0, 1, 2, ..., 9]`。
#### While 循环
`while` 循环用于不确定迭代次数的情形。只要给定条件为真,就会持续执行循环体中的代码,直到条件变为假时终止。其基本格式为:
```python
while 条件:
# 循环体
```
#### 中断循环
Python 提供了两种控制循环的方式:
1. **`continue`**:跳过当前循环的剩余部分,直接进入下一次迭代。
2. **`break`**:立即退出整个循环。
### 函数
函数是将一段代码封装起来以便重复使用的工具。它们接受输入参数并返回结果。定义函数的基本语法如下:
```python
def 函数名(参数1, 参数2, ...):
# 函数体
return 结果
```
使用 `def` 关键字声明函数名称及其参数。参数可以为空或多个,以逗号分隔。返回值可以通过 `return` 语句指定,若无显式返回,则默认返回 `None`。
#### 函数调用与参数传递
调用函数时需提供相应数量的实参。Python 支持多种参数传递方式,包括位置传递、关键字传递等。例如:
```python
def square_sum(left, right):
return left**2 + right**2
result = square_sum(2, 3)
print(result) # 输出 13
```
对于不可变类型(如数字)作为参数传递时,修改不会影响原始变量;而对于可变类型(如列表),则会影响原对象。
### 面向对象编程
Python 支持面向对象编程范式,允许创建类和实例化对象。类是对具有共同属性和行为的对象的抽象表示。
#### 类的定义
定义一个类通常包含属性和方法。构造函数 `__init__()` 用于初始化新创建的对象。
```python
class Car:
def __init__(self, make, model):
self.make = make
self.model = model
def start(self):
print(f'{self.make} {self.model} is starting.')
```
#### 继承与多态
子类可以从父类继承属性和方法,并根据需要重写特定功能。例如:
```python
class BMW(Car):
def start(self):
print('BMW engine starts smoothly.')
bmw = BMW('BMW', 'X5')
bmw.start() # 输出 'BMW engine starts smoothly.'
```
通过这种方式,子类可以扩展或修改父类的行为。
#### 特殊方法
Python 中有一些特殊方法(如 `__add__()`, `__sub__()`),用于自定义运算符的行为。例如:
```python
class MyList(list):
def __sub__(self, other):
return [item for item in self if item not in other]
a = MyList([1, 2, 3])
b = MyList([2, 3, 4])
print(a - b) # 输出 [1]
```
这种机制使得我们可以像操作内置数据类型一样操作自定义类的实例。
参考资料: [实验楼课程](https://www.shiyanlou.com/courses/214/labs/649/document)
注: 转载请注明原文出处: 作者: CUG_UESTC, 出处: [博客链接](http://blog.csdn.net/qq_31192383/article/details/53725338)
推荐阅读
-
SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ...
[详细]
蜡笔小新 2024-12-25 19:26:39
-
本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ...
[详细]
蜡笔小新 2024-12-25 04:11:22
-
-
本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ...
[详细]
蜡笔小新 2024-12-25 16:06:42
-
本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ...
[详细]
蜡笔小新 2024-12-25 19:52:47
-
本文介绍了如何利用npm脚本和concurrently工具,实现本地开发环境中多个监听服务的同时启动,包括HTTP服务、自动刷新、Sass和ES6支持。 ...
[详细]
蜡笔小新 2024-12-25 18:10:18
-
本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ...
[详细]
蜡笔小新 2024-12-25 17:47:23
-
本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ...
[详细]
蜡笔小新 2024-12-25 17:38:50
-
SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ...
[详细]
蜡笔小新 2024-12-25 17:20:08
-
本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ...
[详细]
蜡笔小新 2024-12-25 16:03:57
-
本文提供了一系列Python编程基础练习题,涵盖了列表操作、循环结构、字符串处理和元组特性等内容。通过这些练习题,读者可以巩固对Python语言的理解并提升编程技能。 ...
[详细]
蜡笔小新 2024-12-25 13:42:47
-
本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ...
[详细]
蜡笔小新 2024-12-25 13:08:21
-
本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ...
[详细]
蜡笔小新 2024-12-25 10:33:17
-
配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ...
[详细]
蜡笔小新 2024-12-25 09:41:14
-
本文详细介绍了在不同版本的Visual Studio中,如何正确处理成员函数指针以避免编译错误C3867。同时,提供了一个具体的代码示例及其优化方案。 ...
[详细]
蜡笔小新 2024-12-25 07:37:26
-
脑机接口(BCI)技术正逐步将科幻变为现实,从帮助听障人士恢复听力到使瘫痪者重新站立,甚至可能将多年的学习过程压缩至瞬间。本文探讨了这一前沿技术的现状、挑战及其未来前景。 ...
[详细]
蜡笔小新 2024-12-24 23:49:49
-