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行&#…

python中函数参数_Python函数的参数

本章将介绍函数中参数的用法&#xff0c;更多内容请参考:Python学习指南定义函数的时候&#xff0c;我们把参数的名字和位置确定下来&#xff0c;函数的接口定义就完成了。对于函数的调用者来说&#xff0c;只需要知道传递正确的参数&#xff0c;以及函数就返回什么样的值就够了…

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

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

python中字符编码使用_python中字符编码是什么?如何转换字符?

屏幕前我们看到的文字&#xff0c;在计算机中也是这样表示吗&#xff1f;事实上&#xff0c;我们所有的信息电脑是无法直接理解的&#xff0c;同样我们所要表达的信息&#xff0c;计算机也不能看懂。这就需要架起一个理解的桥梁&#xff0c;也就是编码帮助我们相互之间进行翻译…

mysql grant proxy on_MySQL 5.7权限的介绍

MySQL支持的权限如下&#xff1a;ALL或ALL PRIVILEGES 代表指定权限等级的所有权限。ALTER 允许使用ALTER TABLE来改变表的结构&#xff0c;ALTER TABLE同时也需要CREATE和INSERT权限。重命名一个表需要对旧表具有ALTER和DROP权限&#xff0c;对新版具有CREATE和INSERT权限。AL…

python 3.9 发布计划_Python 3.9.0 beta4 发布

Python 3.9.0b4 发布了&#xff0c;Python 3.9 目前仍在开发中&#xff0c;此版本 3.9.0b4 是五个计划的 beta 版本预览中的第四个。Beta 版本预览旨在为广大社区提供测试新功能和错误修复以及准备其项目以支持新功能版本的机会。 Python 3.9 部分主要新功能和变更&#xff1a;…

java junit 异常_JUnit:使用Java 8和Lambda表达式测试异常

java junit 异常在JUnit中&#xff0c;有许多方法可以在测试代码中测试异常&#xff0c;包括try-catch idiom JUnit Rule和catch-exception库。 从Java 8开始&#xff0c;我们还有另一种处理异常的方法&#xff1a;使用lambda表达式。 在这篇简短的博客文章中&#xff0c;我将演…

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

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

python getopt.getopt_python 参数格式化getopt

命令行参数格式化需要python getopt模块&#xff1a;1.python 命令行参数格式化写道try:options,args getopt.getopt(sys.argv[1:],"hp:i:",["help","ip","port"])except getopt.GetoptError:sys.exit()for name,value in options:i…

使用Zuul和Spring Boot创建API网关

介绍 使用微服务时&#xff0c;通常具有对系统的统一访问点&#xff08;也称为API Gateway &#xff09;。 消费者仅与API网关交谈&#xff0c;而不与服务直接交谈。 这掩盖了您的系统由多个较小的服务组成的事实。 API网关还可帮助解决常见的挑战&#xff0c;例如身份验证&…

纯净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…

ambari mysql error code: 1665_ambari安装中常见的问题

1.openssl版本问题错误如下&#xff1a;ERROR 2018-09-11 14:51:40,101 NetUtil.py:96 - EOF occurred in violation of protocol (_ssl.c:579)ERROR 2018-09-11 14:51:40,101 NetUtil.py:97 - SSLError: Failed to connect. Please check openssl library versions.解决方法&a…

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

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

python编写代码时零_python – KeyError:运行打包代码时为0L

我有一个名为rra.py的脚本,它具有以下skelton结构&#xff1a;usn""usnl[]from bs4 import BeautifulSoupimport reimport asysimport globimport osimport sysimport sysdef inputIndex():#some processsingdef getval():#some processingdef parsehtml():#some pro…

python读取sqlserver的数据_Python:使用并发未来进程P读取sqlserver数据

我是一个从未使用过任何并行处理方法的新手。我希望从SQL Server读取大量数据(即至少200万行)&#xff0c;并希望使用并行处理来加快读取速度。下面是我使用并发未来进程池进行并行处理的尝试。在class DatabaseWorker(object):def __init__(self, connection_string, n, resul…