python函数和模块的使用方法_Python学习06_函数和模块的使用

引入

在写有些代码的时候,会发现有些步骤重复了多次,他也不像循环,都是相同的东西在重复,而是指做某件事情的步骤方法,做事的人或对象发生了改变,但是方法却没有改变。

要想写出高质量的代码,首先要解决的就是重复代码的问题。我们可以将某些解决问题的步骤,封装在一个称之为“函数”的功能模块中,当需要重复使用的时候,再调用这个“函数”就可以了。

定义函数

在Python中,使用关键字def来定义函数,函数的名字的命名规则和变量名的命名规则是一样的。在函数名后面的圆括号中放置传递给函数的参数,可以理解成要对什么样的东西产生影响,类似数学上函数的自变量。在函数完成后可以通过return关键字返回一个值。

请说出下面的方程有多少组正整数解。

2eec9f69334f6fe7d023459996eed411.png

实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案。想到这一点问题的答案就呼之欲出了。

190b7746729e0a08590415778655d64b.png

可以用Python的程序来计算出这个值,代码如下所示。

"""

函数

"""

def jc(n):

ans = 1

for i in range(1, n+1):

ans *= i

return ans

m = int(input('请输入m的值:'))

n = int(input('请输入n的值:'))

print(jc(m) // jc(n) // jc(m-n))

ba233f3c1aaf69bac9a490dd7c3832ac.png

函数的参数

在Python中,函数的参数可以有默认值,也支持使用可变参数。

"""

函数参数

"""

def add(a=0,b=0,c=0):

return a+b+c;

print(add())

print(add(1))

print(add(1,2))

print(add(1,2,3))

print(add(c=50,a=100,b=200))

af04cbd69b2f95dd78fa85a54fffc5e3.png

当我们在不确定参数个数的时候,我们可以使用可变参数。

"""

函数参数

"""

def add(*args):

total = 0

for var in args:

total += var

return total

print(add())

print(add(1))

print(add(1, 2))

print(add(1, 2, 3))

print(add(1, 3, 5, 7, 9))

7017d2b0f74dfab2fd67add46cdb1172.png

使用模块管理函数

当出现同一个.py文件中定义了两个同名的函数,应为不存在重载的概念,后一个定义会覆盖之前的定义。

解决命名冲突,除了使用不同的命名外。我们也能使用模块来进行管理,这一点在多人协作开发时很有用。在Python中,每个文件就代表了一个模块,在使用函数的时候,我们通过impirt关键字导入执行的模块就可以区分到底要使用的是那个模块中的函数。

day0604.py

def foo():

print('hello,world!')

day0605.py

def foo():

print('goodbye,world!')

day0606.py

import day0604 as m1

import day0605 as m2

m1.foo()

m2.foo()

8ff4266770fd9153c698a2630350897f.png

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

day0607.py

def foo():

pass

def bar():

pass

# __name__是Python中一个隐含的变量它代表了模块的名字

# 只有被Python解释器直接执行的模块的名字才是__main__

if __name__ == '__main__':

print('call foo()')

foo()

print('call bar()')

bar()

练习

练习一

实现计算求最大公约数和最小公倍数的函数

def gcd(x, y):

if y == 0:

return x

return gcd(y, x % y)

def lcm(x, y):

return x*y//gcd(x, y)

if __name__ == '__main__':

a = int(input('输入a:'))

b = int(input('输入b:'))

print('%d和%d的最大公约数:%d'%(a,b,gcd(a,b)))

print('%d和%d的最小公倍数:%d'%(a,b,lcm(a,b)))

5d32dfd810bf6d3edcb066cf03f0660f.png

练习二

判断一个数是不是回文数的函数

def reser(num):

_num=0

while num!=0:

_num=_num*10+num%10

num//=10

return _num

def isPalindrome(num):

_num=reser(num)

# print(_num)

return _num==num

if __name__ == '__main__':

x = int(input('请输入x:'))

if isPalindrome(x)==True:

print('是回文数')

else:

print('不是回文数')

08a2a416a35971e56951551dba81127a.png

练习三

实现判断一个数是不是素数的函数

def is_prime(num):

if num<2:

return False

for i in range(2,num//2):

if num%i==0:

return False

return True

if __name__ == '__main__':

x=int(input('请输入x:'))

if is_prime(x):

print('是质数')

else:

print('不是质数')

345adfd39e508c7ff00e8136aa6cd32f.png

练习四

写一个程序判断输入的正整数是不是回文素数

import day0610 as m1

import day0609 as m2

if __name__ == '__main__':

x=int(input('请输入x:'))

if m1.is_prime(x) and m2.isPalindrome(x):

print('是回文质数')

else:

print('不是回文质数')

021959f90f544c769e2f0ecda162eb2e.png

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

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

相关文章

tmemo 选择消除行_Divi模块,行和部分加入高级动画选项

一切元素的动画选项每个Divi模块&#xff0c;行和部分都带有高级动画选项&#xff0c;你可以使用这些选项来吸引访问者并使页面更加耀眼。Divi引入一个全新的动画系统&#xff0c;并将这些高级动画选项扩展到每个Divi模块&#xff0c;行和部分&#xff01;这些新选项已合并到一…

java8 streams_Java 8 Friday:使用Streams API时的10个细微错误

java8 streams在Data Geekery &#xff0c;我们喜欢Java。 而且&#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL &#xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五&#xff0c;我们都会向您展示一些不错的教程风格的Java …

python带参数装饰器 函数名_python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)...

一、函数名应用函数名是什么&#xff1f;函数名是函数的名字&#xff0c;本质&#xff1a;变量&#xff0c;特殊的变量。函数名()&#xff0c;执行此函数。python 规范写法1. #后面加一个空格&#xff0c;再写内容&#xff0c;就没有波浪线了。2.一行代码写完&#xff0c;下面一…

python逐行写入excel_快来看看Python如何玩转Excel

来源&#xff1a;ID(innerV)如何用Python来操作Excel文件呢&#xff1f;首先&#xff0c;使用pip 包管理器来安装两个包&#xff0c;安装命令&#xff1a;pip install xlrd pip install xlwt我们来看读取excel的例子&#xff0c;第1行&#xff0c;import 导入xlrd包第4行&#…

Java面试准备:15个Java面试问题

并非所有的访谈都将重点放在算法和数据结构上—通常&#xff0c;访谈通常只侧重于您声称是专家的语言或技术。在此类访谈中&#xff0c;通常没有任何“陷阱”问题&#xff0c;而是它们要求您利用内存和使用该语言的经验–换句话说&#xff0c;它们测试您对编程语言的了解。 但…

mysql排插问题_MySQL一次数据插入故障记录

某天突然收到报警&#xff0c;数据库大量事务等待&#xff0c;进到数据库后发线大量的插入操作被阻塞&#xff0c;且都是同一个表的。通过 show engine innodb status 发现插入操作都是在等待索引 idx_create_time(create_time) 的 insert intention lock(跟 gap 锁互斥)&#…

纯净pe工具_微PE工具箱2.0

(特殊时期&#xff0c;在家时间多一些&#xff0c;突然想到多年的公众号&#xff0c;重启试试&#xff0c;嗯就先每一天推荐一个软件吧)微PE工具箱(WinPE)是一款非常好用的PE系统(独立的预安装环境)&#xff0c;非常纯净&#xff0c;是装机维护得力的助手。安装简单&#xff0c…

sping jdbc 链接mysql_Spring Boot JDBC 连接数据库示例

文本将对在spring Boot构建的Web应用中&#xff0c;基于MySQL数据库的几种数据库连接方式进行介绍。包括JDBC、JPA、MyBatis、多数据源和事务。JDBC 连接数据库1、属性配置文件(application.properties)spring.datasource.urljdbc:mysql://localhost:3306/testspring.datasourc…

二分查找递归与非递归的时间比较_我们说一说Python的查找算法!

相信大家在面试开发岗和算法岗时&#xff0c;评委最喜欢问的就是&#xff1a;您能给我说一下查找和排序算法有哪些&#xff1f;今天咱们就说一说Python中最常用的查找算法&#xff0c;下期我们再推出排序算法。首先要明白查找是查什么&#xff1f;我们希望能给定一个值&#xf…

jsf 自定义属性_如何在JSF中实现自定义密码强度指示器

jsf 自定义属性使用JavaScript验证密码强度是一项常见任务。 在本文中&#xff0c;我将展示如何向基于JSF的Web应用程序添加密码强度指示器。 的 PrimeFaces中的密码组件已经具有密码强度的反馈指示符&#xff0c;但是它有两个主要缺点&#xff1a; 反馈指示器没有响应&#…

OAuth 2.0 Java指南:5分钟保护您的应用程序安全

使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 今天尝试Okta。 现代应用程序依赖于用户身份验证&#xff0c;但是它可能给Java开发人员带来困难的挑战&#xff0c;以及一系列特定于框…

flutter从0到1构建大前端应用 pdf_前端骨架屏都是如何生成的

作者&#xff1a;SHERlocked93转发链接&#xff1a;https://mp.weixin.qq.com/s/j2XzwLPnalDCNaKkfjH-0Q前言相比于早些年前后端代码紧密耦合、后端工程师还得写前端代码的时代&#xff0c;如今已发展到前后端分离&#xff0c;这种开发方式大大提升了前后端项目的可维护性与开发…

成为Java流大师–第1部分:创建流

在许多情况下&#xff0c;声明性代码&#xff08;例如&#xff0c;具有Streams的功能组合&#xff09;可提供出色的代码指标。 通过本动手实验文章系列进行编码&#xff0c;并成为Java Streams的主教练&#xff0c;从而成为一名更好的Java程序员。 Streams的整个想法是代表一个…

java 6 基础教程_Java小白入门教程(6)——循环语句

提纲&#xff1a;1、循环结构2、while循环3、do-while循环4、for循环5、break语句6、continue语句7、循环嵌套8、作业一、循环结构1.1 概念条件满足&#xff0c;某些代码会被反复多次的执行。条件不成立了&#xff0c;循环结束。0-n次。1.2 为什么使用循环开发中可能会把某些代…

事件触发控制_SystemVerilog线程控制与通信

01线程控制1.概述线程&#xff0c;即独立运行的程序&#xff1b;线程需要被触发执行&#xff0c;可以结束或者不结束&#xff1b;在module中的initial和always&#xff0c;都可以看作独立的线程&#xff0c;他们在仿真0时刻开始&#xff0c;而选择结束或者不结束&#xff1b;在…

java必读书籍_最佳5本Java性能调优书籍–精选,必读

java必读书籍为什么Java开发人员应该阅读有关性能调优的书&#xff1f; 当我很久以前第一次面对这个问题时&#xff0c;我以为以后会做&#xff0c;但是我很长一段时间都没有回过头来。 仅当我在用Java编写的任务关键型服务器端财务应用程序中遇到严重的性能和可伸缩性问题时&a…

成为Java流大师–第4部分:数据库流

SQL一直是一种声明性语言&#xff0c;而Java长期以来势在必行。 Java流改变了游戏规则。 通过本动手文章编写您的方式&#xff0c;并学习如何使用Java流对RDBMS数据库执行声明性查询&#xff0c;而无需编写任何SQL代码。 您会发现&#xff0c;Java流和SQL命令的动词之间有着惊人…

unsafehelper java_Java 9中将移除 Sun.misc.Unsafe

灾难将至&#xff0c;Java 9中将移除 Sun.misc.UnsafeOracle 正在计划在Java 9中去掉 sun.misc.Unsafe API。 这绝对将是一场灾难&#xff0c;有可能会彻底破坏整个 java 生态圈。 几乎每个使用 java开发的工具、软件基础设施、高性能开发库都在底层使用了 sun.misc.Unsafe。 下…

java 根据类名示例化类_如何使用示例从Java中的类路径加载资源

java 根据类名示例化类Java中的类路径不仅用于加载.class文件&#xff0c;而且还可以用于加载资源&#xff0c;例如属性文件&#xff0c;图像&#xff0c;图标&#xff0c;缩略图或任何二进制内容。 Java提供了API来将这些资源读取为InputStream或URL。 假设您在项目的config文…

java课程设计进程管理_Java课设总结(个人版)

使用物理引擎JBox2D完成游戏关卡的各个物理状态模拟根据物理引擎设计Bird,Pig,Brick等游戏中出现的可运动刚体类建立JBox2d的工具类以实现###本人对这次课设的看法与吐槽 1.课设内容的脑洞是我在看完17级学长的游戏课设之后想出的 当时还没学java网络编程的内容&#xff0c;误以…