热门标签 | 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)
推荐阅读
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本文详细解析了如何使用Python语言在STM32硬件平台上实现高效的编程和快速的应用开发。通过具体的代码示例,展示了Python简洁而强大的特性。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
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社区 版权所有