python小白之有关函数的那些事

python小白之第二节-有关函数的那些事

Reference: Kaggle Notebook Functions and Getting Help! Click me!

上一节有提到过print()函数,但是其实除此之外,python还有好多好多的函数,而且还支持自定义函数。

今天就学一下如何调用已知函数又或者自定义函数

首先,在正式学习之前,我们先看看如何向python寻求帮助(Getting Help);

先放一个例子:

help(round)

输出:help(round)的输出

1. help()函数(Getting Help)

help()的函数可以说是python函数中最重要的一位成员了。只需要记住help()函数如何使用,就等于记住了千千万万的python函数如何使用了。

由上述例子可以看出:
1、round()函数的调用格式:round(number[, ndigits]);这表明round()函数自带一个参数(argument),名为number;另外还可以选择性指定另一个参数,此参数主要用于给定精确度,此处称为ndigits。注意:参数ndigits并非必须的,默认为0。
“- > number” 代表的是返回的是数值。
2、除了介绍调用格式,python还提供了一些简单的介绍。round()函数主要用于将数字四舍五入,参数number代表需要判定四舍五入的数字,参数ndigits代表的是精确度(默认为0);给个例子大家就会懂了

round(4.6)

输出:

5
round(5.9887,2)

输出:

5.99

注意注意

使用help()查找函数的用法时,千万别带参数!!只需要输入函数名称即可。因为python的运行规则是从内到外;举个例子help(round(1.2)),也就是python会先计算round(1.2)的值,然后再运行help(1),所以这样无法查找round()函数的使用方法哦~

2. 自定义函数(Defining Functions)

先来一个例子:

扫描二维码关注公众号,回复: 11173582 查看本文章
def least_difference(a,b,c): # 创建自定义函数,给定函数名为diff_difference,并带有3个参数a、b、c
	diff1 = abs(a - b) # 求(a-b)的绝对值并赋给变量diff1
	diff2 = abs(b - c) # 求(b-c)的绝对值并赋给变量diff2
	diff3 = abs(a - c) # 求(a-c)的绝对值并赋给变量diff3
	return min(diff1, diff2, diff3) # 返回变量diff1、diff2、diff3中的最小值

上述函数名为diff_difference,并带有三个参数a、b和c;

规则:
1、自定义函数由关键字 “def” 引入,后加函数名称冒号(:)
2、调用函数时,python将运行冒号(:)后的缩进的代码块;
3、“return” 是另一个自定义函数中常用的关键字;当python运行到了“return”,则会马上退出运行并且将值传递给后续的程序。

接下来看看如何调用上述自定义函数:

print(least_difference(1, 10, 100), 
      least_difference(1, 10, 10),
      least_difference(5, 6, 7)
      )

输出:

9 0 1

调用函数的方式:函数名称(参数)
如:least_difference(1, 10, 100)

或者我们也可以尝试使用help()函数来帮助学习如何调用函数哦~

3. 文档字符串(Docstring)

文档字符串主要用于帮助理解程序文档,增强程序的可读性;

def least_difference(a,b,c): 
	"""Return the smallest difference between any two numbers among a, b and c.
	
	>>> least_difference(1, 5, -5)
	4
	"""
	diff1 = abs(a - b) 
	diff2 = abs(b - c)
	diff3 = abs(a - c) 
	return min(diff1, diff2, diff3) 

文档字符串的用法:
1、三引号字符串,可跨行;
2、首行的首字母必须大写,并以句号(.)结尾;
3、第二部分是空行;
4、第三部分是详细的描述;
(以上用法除了第一点以外,其他都不是必须的,但是强烈建议养成这种书写习惯!有助于后续对程序的理解)

很多同学可能有疑问,文档字符串有什么作用呢?
我们一起来看看吧~

help(least_difference)

输出:
help(least_difference)
结果很明显啦,就是在调用help函数的时候,除了显示least_difference的用法,还额外多了几行对函数的描述。
没错,这几行描述就是刚刚的docstring。

还有一点需要解释的是,第三部分的“>>>” 其实是python交互模式下的命令提示符,这只是为了方便读者阅读程序而已~python并不会运行这一行程序的。

如果想知道更多例子,可以看看numpy函数中的np.eye的文档字符串

import numpy as np

help(np.eye)

4. 没有返回的函数(Functions that don’t return)

我们下面来看看,如果缺少了“return”,会发生什么事?

def least_difference(a,b,c): 
	"""Return the smallest difference between any two numbers among a, b and c.
	
	>>> least_difference(1, 5, -5)
	4
	"""
	diff1 = abs(a - b) 
	diff2 = abs(b - c)
	diff3 = abs(a - c) 
	min(diff1, diff2, diff3) 

print(least_difference(1, 10, 100), 
      least_difference(1, 10, 10),
      least_difference(5, 6, 7)
      )

输出:

None None None

从上述例子可以看出,调用diff_difference函数的结果是None(一个很特殊的值),跟其他语言中的null相似。

所以,如果没有了“return”,这个函数就显得毫无意义了,因为此函数并没有返回任何有用的信息。

就像print() 函数和help() 函数,两者都不带有“return”属性,而只是简单地在屏幕上显示运行结果而已。举个例子:

message = print()
print(message)

输出:

None

5. 默认参数(Default Arguments)

先看一个print函数的例子:

print(1, 2, 3, sep=' < ')

输出:

1 < 2 < 3

当我们调用help(print)函数时,我们可以看到其实print函数选择添加不同类型的参数。如上述代码,多了“sep = ’ < ’ “;表示可以给sep赋予一个特殊的值,并在需打印的参数之间放置这个特殊的值,如“ < “。

但如果我们没有指定这个特别的值,则sep会被默认为一个空格。

再看一段比较有意思的代码吧

def greet(who = 'Colin'):
	print("hello, ",who)

greet()
greet(who = 'Kaggle')
greet('world')

输出:

hello, Colin
hello, Kaggle
hello, world

1、第一次调用函数greet(),括号内没有加任何参数,是因为本身在自定义函数时,就已经指定了参数为“Colin”;
2、第二次调用函数时,把参数“Colin”改为了“Kaggle”;
3、第三次调用函数时,省去了参数名称“who = ”;
注意:在这种情况下是可以省去参数名称的,因为参数是确定的。

6. 函数应用(Functions Applied to Functions)

简单来说,就是将函数作为参数应用于其他函数。先看看例子:

def mult_by_five(x):
	return 5 * x

def call(fn, arg):
	"""Call fn on arg"""
	return fn(arg)

def squared_call(fn, arg):
	"""Call fn on the result of calling fn on arg"""
	return fn(fn(arg))

print(call(mult_by_five, 1), 
	  squared_call(mult_by_five, 1),
	  sep = '\n')

输出:

5
25

我们先分部看print函数:

1、第一部分“call(mult_by_five, 1),表示调用了call函数,而call函数的返回是fn(arg),也就是mult_by_five(1),再次回到自定义函数mult_by_five(x),此函数返回的是5 * x,所以call(mult_by_five, 1)返回的就是5*1=5;

2、第二部分“squared_call(mult_by_five, 1)”,此处调用了squared_call函数,此函数返回的是fn(fn(arg));也就是mult_by_five(mult_by_five(1)),此处再次回到了mult_by_five函数了,mult_by_five(5) 返回的是5*5=25。因此此处的最后结果是25。

这种函数称为“高阶函数”

还有一个有趣的代码:

def mod_5(x):
	"""Return the remainder of x after dividing by 5"""
	return x % 5

print('Which number is biggest?',
	  max(100, 51, 14),
	  'Which number is the biggest modulo 5?',
	  max(100, 51, 14, key=mod_5),
	  sep='\n',)

输出:

Which number is biggest?
100
Which number is the biggest modulo 5?
14

今天差不多啦~拜~

原创文章 8 获赞 17 访问量 258

猜你喜欢

转载自blog.csdn.net/weixin_46995523/article/details/105804858