python菜鸟学习Day4(函数)

python中函数

1 我们可以将重复的代码抽取定义成函数,这样可以直接调用函数,避免代码重复。python中的函数与其他语言有些不同,参数可以有默认值,如果没有传入对应参数的值,就使用默认值,参数也可以是可变参数。所以Python并不需要像其他语言一样支持函数的重载.

def add(a,b):
	return a+b
#调用
add(2,3)

#参数有默认值
def add(a=0,b=0):
	return a+b
#调用	
add()
add(1)
add(1,3)
add(b=1,a=3)

#可变参数
#在参数面前加个*,表示该参数是可变参数
def add(*args):
	total = 0
	for val in args:
		total += val 
	return total 
#调用
add()
add(2)
add(2,4)

2 由于python不存在函数重载,同一个.py文件,如果用同名的函数,后面的函数会覆盖前面的函数,所以只有一个函数是真是存在的。

def foo():
    print('hello, world!')


def foo():
    print('goodbye, world!')


# 下面的代码会输出什么呢?
foo()
goodbye, world!

3 python中每个.py文件代表一个模块(moudle),不同模块可以有相同名字的函数,然后用import关键字引入模块来区分究竟是哪个模块的函数。

module1.py

def foo():
    print('hello, world!')
module2.py

def foo():
    print('goodbye, world!')
#
test.py

import module1 
import module2

module1.foo()
# 输出hello, world!
module2.foo()
# 输出goodbye, world!

4 如果用下面的调用方式,后面的同名函数也会覆盖前面的函数

from moudle1 import foo
from moudle2 import foo
#调用
foo()
# 输出goodbye, world!

5 我们习惯在.py文件中加入if name == ‘main’:,因为如果没有这句话,在用import moudle的时候,就会调用该moudle的可执行代码,我们不希望如此。加入这个if语句,import moudle时,name__的名字是moudle,而不是__main,只有被直接调用的.py 文件__name__==main

module3.py

def foo():
    pass

def bar():
    pass

# __name__是Python中一个隐含的变量它代表了模块的名字
# 只有被Python解释器直接执行的模块的名字才是__main__
if __name__ == '__main__':
    print('call foo()')
    foo()
    print('call bar()')
    bar()
    
#调用测试    
test.py
import module3

# 导入module3时 不会执行模块中if条件成立时的代码 因为模块的名字是module3而不是__main__

6 变量作用域

def foo():
    a = 200 #局部变量
    print(a)  # 200


if __name__ == '__main__':
    a = 100 #全局变量
    foo()
    print(a)  # 100

调用foo函数后,变量a的值并没有改变,函数外的a是全局变量,函数内的a是局部变量,函数内a = 100,是重新定义了一个变量a,函数foo调用a是搜索最近的变量,也就是局部变量a。如果需要在函数内修改全局变量,需要在函数内定义变量是,加上关键字global。如果全局作用域中没有a,那么下面一行的代码就会定义变量a并将其置于全局作用域。

def foo():
    global a
    a = 200
    print(a)  # 200


if __name__ == '__main__':
    a = 100
    foo()
    print(a)  # 200
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值