Python100Days-day6函数和模块的使用

定义函数
示例
def factorial(num):
“”“求阶乘”""
result = 1
for n in range(1, num + 1):
result *= n
return result
Conclusion:关键词def 函数名(参数)
函数的参数
1.可以有默认值,调用函数时没有指定参数时直接使用默认值
2.传递参数时可以不按设定的顺序
示例
def add(a=0, b=0, c=0):
“”“三个数相加”""
return a + b + c
print(add(c=50, a=100, b=200))

3.不确定参数个数时可以使用可变参数,标志是 *
示例
def add( * args):
total = 0
for val in args:
total += val
return total
print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
print(add(1, 3, 5, 7, 9))

用模块管理函数
1.不同的.py文件代表不同的模块
2.不同模块的同名函数可以存在
3.通过import关键词导入指定模块可以区分到底使用的是哪个函数
module1.py
def foo():
print(‘hello, world!’)
module2.py
def foo():
print(‘goodbye, world!’)
方式一
from module1 import foo
#输出hello, world!
foo()
from module2 import foo
#输出goodbye, world!
foo()
方式二
import module1 as m1
import module2 as m2
m1.foo()
m2.foo()
错误示范
from module2 import foo
from module1 import foo
#输出hello, world!
foo()

4.导入的模块可能除了定义函数外还有其他可执行代码,Python解释器在导入这个模块时会执行这些代码
5.不希望这些代码被执行,最好将这些执行代码放入
if name == ‘main’:
条件,这样除非直接运行该模块,否则if条件句下的代码不会执行,
只有直接执行的模块的名字才是"main"
6._name_是Python中的隐含变量,代表模块的名字
变量作用域
1.函数中可以嵌套函数
2.函数中定义的变量在函数外部无法访问,属于局部作用域
3.不在任何函数中定义的变量是全局变量,属于全局作用域
在函数中通过 global 变量名 定义全局变量
示例
def foo():
global a
a = 200
print(a) # 200
if name == ‘main’:
a = 100
foo()
print(a) # 200

4.嵌套在函数中的函数属于嵌套作用域,在函数中也可以通过nonlocal关键字指示变量来自嵌套作用域
示例
def foo():
b = ‘hello’ #b属于局部作用域
# Python中可以在函数内部再定义函数
def bar():
c = True #c属于嵌套作用域
print(a)
print(b)
print©
bar()
# print© # NameError: name ‘c’ is not defined
if name == ‘main’:
a = 100 #a属于全局作用域
# print(b) # NameError: name ‘b’ is not defined
foo()

Tips:我们应该尽量减少全局变量的使用 ,降低代码之间耦合度
今后Python代码格式

def main():
    # Todo: Add your code here
    pass
if __name__ == '__main__':
    main()

练习
练习1:实现计算求最大公约数和最小公倍数的函数

def gcd(x, y):
    """求最大公约数"""
    (x, y) = (y, x) if x > y else (x, y)
    for factor in range(x, 0, -1):
        if x % factor == 0 and y % factor == 0:
            return factor


def lcm(x, y):
    """求最小公倍数"""
    return x * y // gcd(x, y)

练习2:实现判断一个数是不是回文数的函数

def is_palindrome(num):
    """判断一个数是不是回文数"""
    temp = num
    total = 0
    while temp > 0:
        total = total * 10 + temp % 10
        temp //= 10
    return total == num

练习3:实现判断一个数是不是素数的函数

def is_prime(num):
    """判断一个数是不是素数"""
    for factor in range(2, num):
        if num % factor == 0:
            return False
    return True if num != 1 else False

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

if __name__ == '__main__':
    num = int(input('请输入正整数: '))
    if is_palindrome(num) and is_prime(num):
        print('%d是回文素数' % num)
发布了18 篇原创文章 · 获赞 0 · 访问量 303

猜你喜欢

转载自blog.csdn.net/RainGiving/article/details/103996802