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)
推荐阅读
-
本文介绍如何使用 Python 编写程序,检查给定列表中的元素是否形成交替峰值模式。我们将探讨两种不同的方法来实现这一目标,并提供详细的代码示例。 ...
[详细]
蜡笔小新 2024-12-27 15:40:11
-
本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ...
[详细]
蜡笔小新 2024-12-28 10:51:55
-
-
本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ...
[详细]
蜡笔小新 2024-12-27 15:04:09
-
本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ...
[详细]
蜡笔小新 2024-12-26 19:26:18
-
本文介绍如何使用 Python 将一个字符串按照指定的行和元素分隔符进行两次拆分,最终将字符串转换为矩阵形式。通过两种不同的方法实现这一功能:一种是使用循环与 split() 方法,另一种是利用列表推导式。 ...
[详细]
蜡笔小新 2024-12-28 12:15:45
-
Java 中的 BigDecimal pow()方法,示例 ...
[详细]
蜡笔小新 2024-12-27 20:54:03
-
1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ...
[详细]
蜡笔小新 2024-12-27 19:32:17
-
本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ...
[详细]
蜡笔小新 2024-12-27 16:11:49
-
本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ...
[详细]
蜡笔小新 2024-12-27 16:01:25
-
本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ...
[详细]
蜡笔小新 2024-12-27 15:06:12
-
探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ...
[详细]
蜡笔小新 2024-12-27 14:34:44
-
本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ...
[详细]
蜡笔小新 2024-12-27 11:39:44
-
学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ...
[详细]
蜡笔小新 2024-12-26 20:04:36
-
本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ...
[详细]
蜡笔小新 2024-12-26 18:31:42
-
尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ...
[详细]
蜡笔小新 2024-12-26 11:29:15
-