网站首页 > 基础教程 正文
本文以GitHub上为素材,规划为约100天的练习,每次的学习和总结均发在这里。有错误的地方还请朋友们指正。
函数的作用
如下面有一个问题,计算三个三角形的面积。如果只运用之前所学的知识,我们需要复制粘贴三遍之前我们写的海伦公式代码:
而函数的出现可以使我们将这类功能封进函数里,每当我们想要调用此功能时,我们只需要调用该函数即可。例如:
定义函数
参照上面的例子,我们使用关键词def来构建函数,后面的括号内可以放入传进函数内的参数,python的函数定义和数学中的函数定义类似,传入函数的参数可以理解为自变量,经过函数变换后我们可以使用return返回需要的结果,可以理解为函数中的因变量。
函数的参数
函数的参数有多种写法,除将变量名写进括号内外,我们也可以采用默认值,即预先规定好参数的值,例如我们写一个扔骰子并求和的函数,默认函数内有两个筛子:
这样子是默认两个骰子扔出并求和,如果想要3个筛子求和,就直接输入Throw_the_dice(3)即可。
但在我们利用函数解决问题的过程中,可能我们并不知道函数具体要传入几个参数(例如求和问题中我们可能事先不知道是几个数求和)。我们可以使用可变参数。
下面利用求和函数来演示
*args 可以承载多个数据传入函数中,例如:
用模块管理函数
有时候我们在和别人共同开发时,会遇到函数名冲突的情况,例如:
那么最后结果只会打印第二个函数的结果,因为第一个函数已经被覆盖住。如果想两个函数都被打印出来,我们可以采用模块管理函数。
还是用两个foo函数举例。
新建一个python文件命名为module2.py
再新建一个python文件名为module3.py
如果我们想分别使用这两个函数,可以引用模块:
这样子两个函数都可以打印但当这样子引用的时候:
则打印结果出来的都是第二个函数的结果,因为第一个函数也被覆盖了。
在模块中我们还会遇到别的代码,例如:
如果引用这个模块使用foo函数,那么module3内的其余执行代码也会一并执行,输出两行文字。
为了避免这种情况,我们可以这样写
这样子只有在直接执行文件时才可以运行全部代码,而导入模块时他的名字时module3而不是main
练习部分
实现计算最大公约数和最小公倍数
代码如下:
官方代码如下:
判断一个数是不是回文数
Tips:回文数即从前往后和往后往前看时一样的
官方代码如下:
判断一个数是不是素数
官方代码如下:
判断输入的正整数是不是回文素数
官方如下:
在这里我们看到,如果我们将两个函数组合起来可以解决更复杂的问题,这就是我们构建函数的意义。
变量作用域
最后我们讨论变量作用域的问题。参考一下代码:
最终打印输出的a的值是多少呢?是100。因为在函数内a就寻找到100的取值,就不需要再去全局寻找变量值了。
变量作用域分为4种,分别为全局变量、嵌套变量、局部变量和内置变量。全局变量意思为跳脱函数外对于全局都有影响的变量,由于函数内部也可以嵌套函数,则第一层函数内、第二层函数外的变量即为嵌套变量,函数内的是局部变量,因为该变量只影响局部。内置变量即def、if、else等这些关键词。
下面用一段代码统一演示:
再回到最开始的例子,那么如何改变a的值,使得打印的a也为200呢?我们可以使用下面的方法:
通过global a来指示函数内a的值置于全局,即使全局没有该变量,在后面仍可以使用这个变量。
在我们正常编程当中,应当避免使用过多的全局变量,因为全局变量的生命周期长、影响过于广泛。
猜你喜欢
- 2024-10-30 30 个 Python常用的语法汇总! python常用方法大全
- 2024-10-30 Python解小学奥数的数学题 python算数学题
- 2024-10-30 浅学Python | 案列分析(下) python案例分析
- 2024-10-30 30个常用Python实现,新手必备! python的妙用
- 2024-10-30 Python基础教程:Day04-循环结构 python循环结构有哪些
- 2024-10-30 结了30个Python常用基础语法,希望对你们有帮助!
- 2024-10-30 「LeetCode算法精讲」计算小于n的质数数量(Python)
- 2024-10-30 Python基础教程:Day06-函数和模块的使用
- 2024-10-30 初学Python最简易入门之十六小程序集锦
- 2024-10-30 新手指南 | python 100天从新手到大师 Day4 循环结构
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)