函数

在学习本节内容之前,我们先来一起做道数学题。

已知:半径分别为0.1、0.2、0.3的三个圆,分别求这三个圆的面积。

很多读者可能要笑一下,这不是小学的数学问题吗?

S = π * r * r

# 那么

S1 = π * 0.1 * 0.1

S1 = π * 0.2 * 0.2

S1 = π * 0.3 * 0.3

在上面的表达式中,我们做了3次求圆的面积,这样的代码实际上就是重复代码。

对于上面的表达式,我们可以将面积公式封装到函数中。在需要计算面积的时候,调用函数即可。

在Python中可以使用def关键字来定义函数,和变量一样每个函数也有一个名字,而且命名规则跟变量的命名规则是一致的。

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

在了解函数的定义及作用之后,我们对上述代码进行重构。重构就是在不影响代码执行结果的前提下对代码的结构进行调整。

def circle_area(r):

S = 3.14 * r * r

print('%.4f' %S)

circle_area(0.1)

circle_area(0.2)

circle_area(0.3)

很多编程语言都支持函数,但是Python对函数处理与其他编程语言有一个显著的区别就是:Python支持函数的参数设有默认值。

例如:我们写一个计算x*x的函数。

def power(x):

return x * x

当我们调用power函数时,必须传入有且仅有的一个参数x。

那么问题来了,如果我们要计算x*x*x怎么办?你可能会说我们再定义一个新的函数计算。那要是需要计算x*x*x*x又该怎么办呢?我们不能无限的定义新函数。

这个时候,相信聪明的你已经想到了。我们可以将power(x)重新定义为power(x,n)。用来计算x的n次方。

def power(x, n):

s = 1

while n > 0:

 = n - 1 s = s * x return s

power(2,5)

这样我们就可以计算任意n次方。

但是此时我们调用旧函数就会报错,原因是我们增加了一个参数,导致旧的代码因为缺少一个参数而无法正常调用:

这个时候,Python的默认参数就派上用场了。

def power(x, n=2):

s = 1

while n > 0:

 = n - 1

s = s * x

return s

这样,当我们调用power(5)时,相当于调用power(5, 2)。

注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面)

二是如何设置默认参数。

当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

使用默认参数有什么好处?最大的好处是能降低调用函数的难度。

模块

相信很多朋友在给函数、变量命名时都非常纠结。至少我本人是这样的。因为Python没有函数重载的概念,那么我们在一个.py文件中命名了两个同名函数应该怎么办呢?例如:

def test():

print("Good")

def test():

print("Bad")test()

我们如何解决这种问题呢?Python引入了模块的概念。我们可以将这两个函数分别写到不同的文件中,通过import关键字进行导入从而引用。

# good.py

def test():

print("Good")

# bad.py

def test():

print("Bad")

当我们想要使用test()函数时,可以如下:

from good import test

# 输出Good

test()

#输出Bad

from bad import test

test()

但是,下面这种情况,程序会调用最后一个模块的函数:

from good import test

from bad import test

test()

需要说明的是,如果我们导入的模块除了定义函数之外还中有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码,事实上我们可能并不希望如此,因此如果我们在模块中编写了执行代码,最好是将这些执行代码放入如下所示的条件中,这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是“\_\_main\_\_”。

通俗的理解就是:当你的脚本文件是被直接运行的时候,则if__name__=='__main__'后的可执行代码就会执行,如果你的代码是被导入的,那么就不会直接运行之后的代码。

好啦,今天的分享到这里就结束了,如果需要更多的技术性文章可以直接访问马哥教育官网!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

零基础Python教程-函数及模块的使用的更多相关文章

  1. 灵魂画手的零基础python教程1:关于Python学习的误区、python的优缺点、前景

    滴~ 近段时间,因为工作项目的原因,阿菌要重拾起python这门语言了,所以顺势写一门python教程,精心的编排,配上漫画和视频,希望能帮助更多想接触编程的同学入门,课程将从基础语法开始讲起,和大家 ...

  2. 零基础Python教程-详说list有序集合

    list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出你周围同事的名字,就可以用一个list表示: >>> classmates = ['Michael', 'Bob' ...

  3. 零基础python教程-用Python设计你的第一个小游戏

    学以致用,既然学习了python就要让它来实现我们想做的东西,这次咱就用python来做个简单小游戏,在实践中不断成长. 1.游戏代码: 输入数字,来猜测原作者心中所想的数字,猜中夸你,猜不中不夸你, ...

  4. 零基础python教程-Python解释器是什么?

    当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件. 由于整个Python语言从规范到解释器都是开源的 ...

  5. 零基础python教程—python数组

    在学习Python过程中数组是个逃不过去的一个关,既然逃不过去咱就勇敢面对它,学习一下python中数组如何使用. 1.数组定义和赋值 python定义一个数组很简单,直接 arr = [];就可以了 ...

  6. Python运算符 - Python零基础入门教程

    目录 一.算术运算符 二.赋值运算符 三.比较运算符 四.运算符的优先等级 五.重点总结 六.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python ...

  7. Python for循环 - Python零基础入门教程

    目录 一.for 循环语法 二.for 循环实战 三.重点总结 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 Python ...

  8. Python break/continue - Python零基础入门教程

    目录 一.break 二.continue 三.重点总结 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 在 Python wh ...

  9. WebRTC 零基础开发者教程(中文版)下载

    WebRTC 简介 WebRTC,是一个支持网页浏览器进行实时语音通话或视频聊天的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术. WebRTC提 ...

随机推荐

  1. swool教程链接汇总

    参考地址: swoole教程第一节:进程管理模块(Process)-上 swoole教程第二节:基础的通讯实现-server篇-1 W3Cschool的swoole的系统教程 csdn网站swoole ...

  2. 【神经网络与深度学习】【计算机视觉】Faster R-CNN

    Faster R-CNN Fast-RCNN基本实现端对端(除了proposal阶段外),下一步自然就是要把proposal阶段也用CNN实现(放到GPU上).这就出现了Faster-RCNN,一个完 ...

  3. Matlab使用新发现1(小技巧:shell 命令、工程工作目录设置相关)

    最近在调试一个基于Matlab的程序,在偶然间发现了几个比较有趣的技巧,给大家分享一下(很可能是太菜鸟了,没有涉及这方面,大方之家请勿见笑,对您有所帮助请点赞!) 1. Matlab语言是一种解释型语 ...

  4. FPGA程序编译后逻辑单元数为0

    问题 FPGA代码写完后编译不报错,但是显示使用的逻辑单元数(Total logic elements)为0.当然程序也不工作. 我用的是Intel Altera FPGA,verilog语言,在Qu ...

  5. MergeSort-vector

    归并排序-vector实现 #include <iostream> #include <vector> using std::cout; using std::endl; us ...

  6. ADB 常用命令及详解

    1.pull文件 adb pull (文件路径) (想要pull的路径) MacBook-Pro:~ caris$ adb pull /sdcard/Android/data/com.xiwi.log ...

  7. QT QML与C++混搭

    "那些杀不死我的必使我更加强大"----尼采 QML与C++混合编程就是使用QML高效便捷地构建UI,而C++则用来实现业务逻辑和复杂算法. ML访问C++Qt集成了QML引擎和Q ...

  8. Office系列常用快捷键

    office三件套,常用的快捷键. Word常用快捷键 查找文字.格式和特殊项 Ctrl+G 使字符变为粗体 Ctrl+B 为字符添加下划线 Ctrl+U 删除段落格式 Ctrl+Q 复制所选文本或对 ...

  9. 05 Mybatis的CRUD操作和Mybatis连接池

    1.CRUD的含义 CRUD是指在做计算处理时的增加(Create).读取(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单词的首字母简写.主要被用在描述软件系统中 ...

  10. WIP*更新生产批详细信息行产品配料

    DECLARE l_batch_header_rec gme_batch_header%ROWTYPE; l_material_detail_rec gme_material_details%ROWT ...