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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值