热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python编程进阶:循环结构、函数与面向对象编程

本文深入探讨了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 编写程序,检查给定列表中的元素是否形成交替峰值模式。我们将探讨两种不同的方法来实现这一目标,并提供详细的代码示例。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文介绍如何使用 Python 将一个字符串按照指定的行和元素分隔符进行两次拆分,最终将字符串转换为矩阵形式。通过两种不同的方法实现这一功能:一种是使用循环与 split() 方法,另一种是利用列表推导式。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
author-avatar
佩奇在吗
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有