人生苦短,我选Pythonpython
前文传送门git
小白学 Python(1):开篇github
跟各位同窗讲一个好消息,当你看到这篇连载的时候,整个 Python 基础内容部分已通过大半了。
但愿各位同窗再接再砺,努力把剩下的部分也看完。
提到函数,没有接触过编程的同窗会不会想到这个:
y = f(x)
可是,咱们在 Python 中使用到的函数和数学中的函数没有半毛钱关系(额,可能稍微有点关系)。
在 Python 中,咱们使用函数是为了简化问题,将同一类的操做定义为一个函数,在遇到相同的问题调用对应的函数,相似于 y = f(x)
,x = 1
的时候 y = 1
, x = 2
的时候 y = 2
。
因此,函数就是重复使用的代码。
定义函数的规则以下:
()
。 定义一个函数大体长这样:
def 函数名(形式参数):
函数体
return 返回值复制代码
def
是系统关键字,至于什么是系统关键字后面咱们再聊,这里仅须要知道 def
是用来定义函数的便可。
系统关键字在 PyCharm 中都会高亮显示,若是没有高亮,那么必定是你打错了。
好比咱们如今定义一个求两数之和的函数:
def add(a, b):
c = a + b
return c复制代码
这个有看不懂的么?
没有的话我就接着往下聊了,有的话就给我留言吧。
以上咱们就完成了一个函数的定义。
函数定义好之后咱们还须要调用函数才能执行,一个函数放在那里是不会自动执行的。
废话,我哪知道你要传什么参数过来。。。
咱们调用一下刚才写好的函数:
c = add(1, 2)
print(c)复制代码
打印结果以下:
3复制代码
这里咱们介绍两个名词:
add(a, b)
中的 a 和 b 就是形参。主要体如今它只是一个形式和格式,真正要执行的时候仍是要看传入的实参。 整个函数调用就是将实参传递给形参,完成计算后返回,而且打印返回值。
Python 中有不少内置的函数,好比咱们以前经常使用的 print()
、 len()
、 type()
、 id()
等等。
这些函数都是内置的,无需咱们定义,因此能够直接拿来使用。
参数的传递有不少种方式,好比刚才咱们调用时使用的就是按照位置顺序传递。
add(1, 2)复制代码
除了按照位置顺序传递,咱们还能够按照赋值来传递:
这里咱们先定义一个减法函数。
def subtraction(a, b):
return a - b
print(subtraction(b=5, a=10))复制代码
打印结果以下:
5复制代码
那么除了以上两种状况,还有没有其余状况?
固然还有,若是参数有两个,可是其中一个可能不会传递,这时咱们能够给它一个默认值。
这里咱们定义一个除法:
def division(a, b=1):
return a / b
print(division(5))
print(division(10, 5))复制代码
在除法中,除数不能为 0 ,否则会报错,这里咱们给了一个默认值是 1 ,当除数不存在的时候,咱们能够取到默认值。
结果打印以下:
5.0
2.0复制代码
这一块是难点,注意听,仔细看,看完细细品。
咱们先定义一个打印的函数:
def print_a(a, b):
print(a, b)复制代码
这时咱们能够打印出来 a 和 b ,可是若是我如今不止想打印两个参数了,我想打印 3 个参数,怎么办?
固然,咱们能够给这个函数再加一个参数 c ,没问题:
def print_a(a, b, c):
print(a, b, c)复制代码
问题又来了,若是我想打印 100 个参数怎么办?
emmmmmmmmm,要么咱们就加 100 个形参?
固然不是这么写啦,咱们能够在参数 b 前面加一个 * ,表示这个参数是可变长参数,当前面的参数都赋值结束后,剩下的参数顺次给这个参数赋值。
def print_a(a, *b):
print(a, b)
print_a(1, 2, 3, 4, 5, 6)复制代码
输出结果以下:
1 (2, 3, 4, 5, 6)复制代码
看到没,这里剩余的参数被转换成了元组的形式进行了输出打印。
咱们还能够给这个参数前面加两个 * ,表示这个参数能够传递的数据类型是以字典的形式传递的。
def print_b(a, **b):
print_a(a, b)
print_b(1, q='q', w='w', e='e')复制代码
打印结果以下:
1 ({'q': 'a', 'w': 'b', 'e': 'c'},)复制代码
固然,变长参数传递时,元组和字典也能够不存在,以下:
print_a(1)
print_b(1)复制代码
结果以下:
1 ()
1 ({},)复制代码
这时,打印出来的就是空元组和空字符串了。
但愿各位同窗必定要本身动手敲代码。
本系列的全部代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便你们取用。