Python基础教学之三:函数与模块篇——实现代码重用和模块化

Python基础教学之三:函数与模块篇——实现代码重用和模块化

一、函数的定义与使用

1. 理解函数

  • 函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码块。
  • 它可以提高代码的重用性和程序的清晰度。
  • 你可以定义一个由自己想要功能的函数,以下是简单的规则:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函数内容以冒号起始,并且缩进。return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

def printme( str ):"打印传入的字符串到标准显示设备上"print strreturn

2. 定义和调用函数

  • 使用def关键字定义函数,如def my_function():
  • 通过函数名加括号的方式调用函数,如my_function()
#!/usr/bin/python
# -*- coding: UTF-8 -*-# 定义函数
def printme( str ):"打印任何传入的字符串"print strreturn# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")

3. 参数传递和返回值

  • 函数通过参数传递数据,使用return语句返回结果。
  • 了解实参和形参的概念,以及如何设置默认参数和可变参数。
#!/usr/bin/python
# -*- coding: UTF-8 -*-# 可写函数说明
def changeme( mylist ):"修改传入的列表"mylist.append([1,2,3,4])print "函数内取值: ", mylistreturn# 调用changeme函数
mylist = [10,20,30]
changeme( mylist )
print "函数外取值: ", mylist

二、模块的使用和创建

1. 使用模块

  • 模块是包含所有你定义的函数和变量的文件,以.py结尾。模块可以被别的程序引入,以使用该模块中的函数等功能。
  • 导入模块使用import语句,如import math
def print_func( par ):print "Hello : ", parreturn

2. 创建自定义模块

  • 将函数和变量保存在.py文件中即可创建自定义模块。
  • 使用from...import...语句从模块中导入指定的部分。

三、作用域和命名空间

1. 作用域规则

  • 局部作用域:函数内部的作用域。
  • 全局作用域:整个文件范围内。
  • 嵌套作用域:函数内部定义的函数或类所引入的局部作用域。

2. 命名空间

  • 命名空间是从名称到对象的映射,Python有多个命名空间,包括局部、全局和内置命名空间。
  • 使用globalnonlocal关键字来指示变量所属的命名空间。

四、实战演示:构建模块化应用

1.设计模块化结构

        在开发较大的应用程序时,将功能划分成多个模块是十分重要的。这不仅有助于代码的重用,还能使维护更加简单。一个良好的开始是把应用程序分解成逻辑部分,每个部分作为一个模块。

例如,假设我们正在创建一个博客系统,可能会包括以下几个模块:

  • auth:处理用户认证和授权
  • posts:管理博客文章的创建、读取、更新和删除
  • comments:负责评论的相关操作
  • notifications:处理通知的发送和接收

文件和目录的结构可能如下所示:

        每个模块目录下都有一个__init__.py文件,这使得Python将这些目录视为模块,login.py, create_post.py, 等文件包含具体的函数和类定义。

2.实际应用案例

        让我们通过创建一个简单的博客发布功能来演示模块化的应用。首先,我们需要在posts模块中定义一个create_post函数,该函数将在create_post.py文件中。

# posts/create_post.pydef create_post(title, content):# 这里简化了实际的数据库操作post = {"title": title, "content": content}return post

        现在,在其他部分的应用中,我们可以重用这个函数。例如,在主应用入口文件main.py中:

# main.pyfrom posts.create_post import create_postdef main():# 假设从某个输入获取标题和内容post_title = "My First Blog Post"post_content = "This is the content of my first blog post."# 创建新博客文章new_post = create_post(post_title, post_content)print("New post created:", new_post)if __name__ == "__main__":main()

        在这个例子中,我们导入了create_post模块中的create_post函数,并在main函数中使用它来创建一个新的博客文章。

3.利用pip安装和管理第三方模块

        在实际应用中,我们经常需要使用第三方模块来扩展功能,如使用requests模块进行网络请求或使用flask框架创建web应用。可以使用Python的包管理工具pip来安装这些模块。

        例如,要安装flask,只需在命令行中运行:

pip install flask

        安装完成后,就可以在Python代码中导入并使用flask模块了。

from flask import Flask, requestapp = Flask(__name__)@app.route('/')
def home():return "Hello, World!"

        通过上述实战演示,我们可以看到如何通过模块化的方式组织代码,以及如何使用Python的包管理工具来扩展我们的应用。这些技巧对于创建大型、可维护的Python应用程序至关重要。

        至此,我们学习了Python中函数和模块的使用,这是编写中大型Python程序的基础。函数和模块帮助我们更好地组织代码,提高代码的可重用性和可维护性。继续前进,我们将深入探讨Python的面向对象编程,体验编程的另一种范式。

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

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

相关文章

交易伦敦银系统,听说高手都有一套

成功的伦敦银交易者都有一套自己的交易系统,这个系统为他们提供了一个明确的、可重复的决策框架,无论白银市场如何波动,他们都能按照既定的规则和策略进行操作,避免了情绪化决策和随意交易——这样的一致性有助于减少错误和亏损&a…

Androd 12 (MTK)修改屏幕物理分辨率Physical Size

1.需求说明 Android目前显示分辨率为480*800,立项表中像素为720*1280。请修改屏幕分辨率到指定大小。 2.思路分析 如果从手机修改对应的分辨率,必须自上而下的进行修改分为两个层面进行修改。 1.驱动底层 2.软件上层 3.结局方法与相关说明 查看当…

安全防御---防火墙实验1

安全防御—防火墙实验1 一、实验拓扑与要求 要求: 1、DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问 2、生产区不允许访问互联网,办公区和游客区允许访问互联网 …

企业注册商标步骤

企业注册商标:详细步骤与关键要点 在当今商业环境中,商标已成为企业品牌建设和市场竞争中不可或缺的一部分。它不仅是企业身份的象征,也是企业知识产权的重要组成部分。 一、确定注册商标的商品项目 首先,企业需要明确需要注册商…

mybatis-plus QueryWrapper 多条件查询

//多条件查询 and条件 和 or条件 Test public void test_01(){QueryWrapper<User> queryWrapper new QueryWrapper<>();queryWrapper.like("name","a").between("age",20,30).or().isNotNull("email");List<User&…

【游戏引擎之路】登神长阶(七)——x86汇编学习:凡做难事,必有所得

5月20日-6月4日&#xff1a;攻克2D物理引擎。 6月4日-6月13日&#xff1a;攻克《3D数学基础》。 6月13日-6月20日&#xff1a;攻克《3D图形教程》。 6月21日-6月22日&#xff1a;攻克《Raycasting游戏教程》。 6月23日-7月1日&#xff1a;攻克《Windows游戏编程大师技巧》。 7月…

Go语言---文件分类、设备文件、磁盘文件、实现打开/写/读/关闭/拷贝文件

设备文件: 屏幕(标准输出设备) fmt.Println()往标准输出设备写内容 键盘(标准输入设备) fmt.Scan()从标准输入设备读取内容 磁盘文件&#xff0c;放在存储设备上的文件 文本文件&#xff1a;以记事本打开&#xff0c;能看到内容(不是乱码) 二进制文件&#xff1a;以记事本打开…

基于物联网技术设计的微型消防小车控制系统(STM32+ESP8266局域网)(181)

基于物联网技术设计的微型消防小车控制系统(STM32+ESP8266局域网)(181) 文章目录 一、设计需求1.1 项目介绍【1】项目背景与功能实现【2】项目硬件模块组成【3】ESP8266工作模式配置【4】Android手机APP开发思路【5】项目模块划分1.2 项目功能需求1.3 项目开发背景1.4 开发工具…

微信右上角的“+”号,竟然能做这些事?90%的人不知道

微信&#xff0c;作为一款集社交、支付、娱乐于一体的超级应用&#xff0c;它的每一次更新都吸引着亿万用户的目光。 在微信的众多功能中&#xff0c;右上角的""号图标看似普通&#xff0c;实则隐藏着许多不为人知的实用技巧。本文将从四个方面深入挖掘这些隐秘功能…

打包时提示:Missing Gradle Project Information.或者在加载gradle时出错

1.Android打包弹出错误提示框&#xff1a;missing gradle project information. please check if the IDE successfully synchronized its state with the Gradble project model. 2.加载gradle出错&#xff1a;修复报错后 File -> Sync Project with Gradle Files

用JavaScript将 NCR(Numeric Character Reference)标记转换为对应字符的方法

0 &#xff0c 、&#11111……是什么鬼&#xff1f; 最近&#xff0c;要将一些网页内容复制到<textarea>文本框中作进一步处理&#xff0c;发现有些网页内容中包含&#xff0c或之类的标记&#xff0c;会被原样复制到<textarea>文本框中。 如果将这些网页内容直…

【C/C++】#pragma oncn用法解析

一.#pragma once介绍 #pragma once 是一种预处理指令&#xff0c;用于在C和C编程中防止头文件被多次包含。它告诉编译器&#xff0c;该文件只应该被包含一次。这通常用于头文件的顶部&#xff0c;以确保整个程序中只包含一次该头文件&#xff0c;避免因多次包含而造成的编译错…

tomcat的安装和解析

tomcat tomcat和php一样&#xff0c;都是用来处理动态页面的 tomecat也可以作为web应用带我去&#xff0c;开源的 php .php tomcat .jsp nginx .html tomcat是用java代码写的程序&#xff0c;运行的是java的web应用程序。 tomcat的特点和功能&#xff1a; 1.servlet容器&#x…

Codeforces Round #956 (Div. 2) and ByteRace 2024(A~D题解)

这次比赛也是比较吃亏的&#xff0c;做题顺序出错了&#xff0c;先做的第三个&#xff0c;错在第三个数据点之后&#xff0c;才做的第二个&#xff08;因为当时有个地方没检查出来&#xff09;所以这次比赛还是一如既往地打拉了 那么就来发一下题解吧 A. Array Divisibility …

ros2--colcon

colcon ros2的编译工具&#xff0c;用于编译ros2项目&#xff1b; 需要在工作空间&#xff0c;也就是src上一级目录colcon build&#xff1b; 很明显colcon作为构建工具&#xff0c;通过调用CMake、Python setuptools完成构建。 小鱼文档 构建参数 --packages-select 仅构…

text prompt如何超过77个词

【深度学习】sdwebui的token_counter,update_token_counter,如何超出77个token的限制?对提示词加权的底层实现_prompt中token权重-CSDN博客文章浏览阅读1.6k次,点赞26次,收藏36次。文章探讨了如何在StableDiffusionProcessing中处理超过77个token的提示,涉及token_counte…

公司网站建站模板源码系统 响应式网站模版 随心自定义 带完整的代码包以及搭建部署教程

系统概述 公司网站建站模板源码系统是一套基于最新技术开发的网站建设解决方案。该系统集成了众多先进的网站开发工具和功能模块&#xff0c;旨在帮助企业快速构建出美观、实用的公司网站。通过采用模块化设计&#xff0c;系统实现了高度可定制性&#xff0c;企业可以根据自身…

土木转行嵌入式,拿到一家初创公司的嵌入式研发offer,值得去吗

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;不论从未来行业的发展前景…

java项目如何配置不同环境变量 以及 原理

如何配置不同的profile 首先&#xff0c;一个java项目&#xff0c;需要有不同的环境配置&#xff0c;打包时&#xff0c;自动使用对应的配置。那么&#xff0c;如何实现呢&#xff1f; 在你的Spring Boot项目的src/main/resources目录下创建或添加一个application.yml文件。这…

纯CSS瀑布流

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>瀑布流布局</title> <style>/* 瀑布…