函数(重点)
(1)初始函数
在认识函数之前,我们先做如下的需求:
让你打印10次“我爱中国,我爱祖国”。我们在接触函数之前是这样写的。
print('我爱中国,我爱祖国')
print('我爱中国,我爱祖国')
print('我爱中国,我爱祖国')
print('我爱中国,我爱祖国')
print('我爱中国,我爱祖国')
print('我爱中国,我爱祖国')
print('我爱中国,我爱祖国')
print('我爱中国,我爱祖国')
print('我爱中国,我爱祖国')
print('我爱中国,我爱祖国')
那么如果再出现一个需求,让你打印100和1000次“我爱中国,我爱祖国”。那么你是不是要写100和1000次的print('我爱中国,我爱祖国')呢?这样写的代码是不是合理呢?
那么这样写好么? 当然不好了,为什么呢? 重复代码太多了。 所以我们能否将这些代码放到一个地方,想用这些代码了,我就通过一个指令,调用过来,不想用就不写这个指令就行了,这样就能极大限度的减少代码的重复率,那么咱们看下面:
def country():
print('我爱中国,我爱祖国')
那么这里,我写了一个可以打印的功能,我将上面的那些重复代码封装到这个所谓的函数中,这样,我什么时候需要使用这个功能,我通过一个指令调用即可。
def country():
print('我爱中国,我爱祖国')
country() # 这个就是函数的一个指令的调用,通过这个我们就可以执行函数。
上面这个就是一个函数,我们接下来就要研究一下函数,从上面的对比我们看一下函数的优势:
1.减少代码的重复性,降低代码的冗余程度。使得我们编写的代码更加的简洁明了。
2.使代码可读性更好,程序员的编码更加友好。
# 我们可以将一模一样的方法用函数进行封装,减少代码的冗余程度
# 重复的代码的数量太多了,导致我们写的代码是low的,重复的代码很多
# 代码的可读性是比较差的。
(2)函数的结构与调用
1)函数的结构
# def 函数名():
# 函数体
def func():
print('你好,我是Andreas!')
def是关键字,用来定义函数,是固定不变的,以def这个关键字开头,空格之后接的是函数名和圆括号(),最后还有一个":"。
空格:为了将def关键字和函数名分开。
函数名:函数名和变量的命名是一样的。函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并且要具有可描述性
括号:是必须加的,一定要加上括号。不然会报错。
下面的函数体一定全部都要缩进,这代表是这个函数的代码。(pycharm会自动缩进)
2)函数的调用
那么我们现在讨论一下,函数什么时候开始执行的呢?是在我们定义了这个函数,就会执行吗?还是?
使用函数名加小括号就可以调用了。写法是:函数名()。这个函数的函数体才会被执行。只有解释器读到函数名() 时,才会执行此函数,如果没有这条指令,不管多少行代码,都是不会被执行的。当'函数名()'你写几次,函数体里面的代码就运行几次。
def func():
print('你好,我是Andreas!')
3)函数的结构和调用的总结
'''
结构:def 关键字 定义函数
func是函数名,与变量的设置是相同的,具有可描述性 login()
函数体:缩进。函数中尽量不要出现print函数
函数什么时候执行?
当函数遇到函数名()时, 函数才会执行!!!
或者说当函数被调用了,那么才会被执行!!!
'''
(3)函数的返回值
在实际的开发的过程中,我们所定义的一个函数封装了所对应的一个功能,这个功能一般都会有一个最终结果的。比如写一个登录函数,最终登录成功与否是不是需要返回你一个结果?还有咱们是不是都用过len这个函数,他是获取一个对象的元素的总个数,最终肯定会返回一个元素个数这样的结果:
s1 = 'abfdas'
print(len(s1)) # 6
'''
return:return有两个功能
第一个功能是:在函数中遇到return直接结束函数。return后面的代码就不会执行了。
第二个功能是:可以在函数中返回处理后的最终的结果值。将数据返回给函数的执行者,调用者func()
return 返回多个元素是以元组的形式返回给函数的执行者,可以采用元组的拆包,获取到元组
中的每一个数据,调用者可以直接使用元组的解构获取多个变量。
'''
'''
: return 总结:
1.在函数中,终止函数
2.return 可以给函数的执行者返回值
1.return 返回单个值 单个值
2.return 返回