python函数和模块的使用方法_Python学习06_函数和模块的使用
引入
在寫有些代碼的時候,會發現有些步驟重復了多次,他也不像循環,都是相同的東西在重復,而是指做某件事情的步驟方法,做事的人或對象發生了改變,但是方法卻沒有改變。
要想寫出高質量的代碼,首先要解決的就是重復代碼的問題。我們可以將某些解決問題的步驟,封裝在一個稱之為“函數”的功能模塊中,當需要重復使用的時候,再調用這個“函數”就可以了。
定義函數
在Python中,使用關鍵字def來定義函數,函數的名字的命名規則和變量名的命名規則是一樣的。在函數名后面的圓括號中放置傳遞給函數的參數,可以理解成要對什么樣的東西產生影響,類似數學上函數的自變量。在函數完成后可以通過return關鍵字返回一個值。
請說出下面的方程有多少組正整數解。
實上,上面的問題等同于將8個蘋果分成四組每組至少一個蘋果有多少種方案。想到這一點問題的答案就呼之欲出了。
可以用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))
函數的參數
在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))
當我們在不確定參數個數的時候,我們可以使用可變參數。
"""
函數參數
"""
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))
使用模塊管理函數
當出現同一個.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()
要說明的是,如果我們導入的模塊除了定義函數之外還中有可以執行代碼,那么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)))
練習二
判斷一個數是不是回文數的函數
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('不是回文數')
練習三
實現判斷一個數是不是素數的函數
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('不是質數')
練習四
寫一個程序判斷輸入的正整數是不是回文素數
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('不是回文質數')
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python函数和模块的使用方法_Python学习06_函数和模块的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 域名备案网址是空白(域名备案网址)
- 下一篇: python带参数装饰器 函数名_pyt