Python创建与调用函数

今天我们来讲Python里的创建与调用函数。

先讲创建函数,创建函数使用def关键字,就是define的缩写。

上代码看看吧:

def say(info):
	print(info)

这就是一个名叫say的函数,我们来看看这个函数的结构:

def 函数名 (参数列表):
函数体

注意,def创建函数也需要缩进。现在我们说说参数的传递。

函数的参数在定义时可以指定默认值,当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代。
可选参数一般都放置在非可选参数的后面,即定义函数时,先给出所有非可选参数,然后再分别列出每个可选参数及对应的默认值。
Python语言同时支持函数按照参数名称方式传递参数。

def 函数名(非可选参数列表, 可选参数 = 默认值):
函数体

刚刚那个例子的info就是一个非可选参数。非可选参数在调用的时候必须给一个值,否则会报错。我们再举个例子:

choice = input('选择1还是2?')
def game(choice,win = True):
	if choice == '1':
		win = False
		print('你没赢')
	if choice == '2':
		win = True
		print('你赢了')

执行一下,什么都没发生,对吧。因为函数在没有调用的时候代码块是不会被执行的。所以我们得调用。Python调用函数很简单,就是像这样:

def say(info):
	print(info)
say('fd')

知道怎么调用了吧。其实就是:
函数名(参数)

扫描二维码关注公众号,回复: 10155308 查看本文章

这里要讲到两个概念,函数上面的那个info叫做形参;调用时这个’fd’叫实参。传递函数就是将实参的值传递到形参。一般是一一对应地传递,比如这样:

def say(info,count):
	for i in range(int(count)):
		print(info)
say('我很好',5)

好玩吧,我们现在再看看另外两种参数类型:

def a(*d):
    print(sum(d))
a(3,2,54)

这个是可变参数类型,就是说可以赋多个值给它。我们可以看看它的类型:

def a(*d):
	print(type(d))
a(3,2,54)

是一个元组,对吧?

我们再看看下一种:

关键字参数,这种参数就是print函数里的end参数,end就叫做关键字参数,我们创一个函数来看看:

def end_(**b):
    print(b)
end_(end = 123)

然后这种的话,它就是一个字典类型,大家也应该看到了打印的结果。

现在我来介绍一个关键字:return。

如果需要返回值,使用保留字return和返回值列表。函数可以没有return语句,函数体结束后会将控制权返回给调用者。

我们举个例子:

def fun():
	a = 5
	return a
fun()
print(fun())

看到了吗,return函数返回值,在直接调用的时候并没反应。我们再来看看不返回的结果:

def fun():
	a = 5
	print(a)
fun()
print(fun())

第二个是不是None?

我们再讲一个很重要的概念,那就是全局变量与局部变量。

局部变量就是比如这种:

def fun():
	a = 45

这个a就是局部变量,当函数调用完,程序就会释放掉函数里的所有局部变量,使得函数内的局部变量无法在外部使用。

def fun():
	a = 45
print(a)

报错了吧!

全局变量就是我们以前学的那些变量,都叫全局变量。全局变量可以在整个程序中使用。

那全局变量如果要在函数里使用,就要用关键字global来声明,比如这样:

a = 45
def fun():
	global a
	a = 56
fun()
print(a)

a的值就改变了吧。

有些情况,全局变量不用声明即可在函数中用,例:

a = [1,5]
def fun():
	a.append(5)
print(a)

是不是加了?这种特殊情况我也缺乏经验,所以大家多试试就行了。

一般考试会出类似这样迷惑人的题。

a = 45
def fun():
	a = 42
print(a)

有比这种更难的,不过我有点忘了…

好了以上就是今天的知识,希望大家记住,这是基础中的基础。创作不易,大家至少关注一下吧。有疑惑的朋友在评论区询问,我会尽力而答。感兴趣的小伙伴,可以加我QQ:3418772261。我们下期再见!

发布了13 篇原创文章 · 获赞 35 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Persia_king/article/details/105093358