机器学习-python篇学习笔记(5)函数
def定义函数
在python中用def来定义函数
定义格式与C语言相似:
但是是使用def进行定义
der function(a,b):
expression
当函数不需要返回值时,括号里可以为空。
在命令行中调用函数可以直接调用:
def function_name():
print('This is a function')
a = 1 + 2
print(a)
>>> function_name()
This is a function
3
而对于需要定义变量和返回值的函数:
def function(a,b):
c = a + b
print("the c is",c)
>>> function(1,2)
the c is 3
>>> function(a = 1, b = 2)
the c is 3
>>> function(b = 2,a = 1)
the c is 3
对比python和c我们可以看出python的虽然对结构要求十分严格,但是语句十分的灵活。
要注意的是,在第二种调用函数的情况下,a,b的位置顺序不影响函数的读取和运行。
函数默认参数
def
sale_car(price,color,brand,is_second_hand):
print('price',price,
'colour',color,
'brand',brand;
'is_second_hand',is_second_hand,)
sale_car(1000,'red','carmy',True)
>>>
price 1000 colour red brand carmy is_second_hand True
即在后面的语句中定义了前面变量的的值。
在程序中,sale_car是系统中定义函数,即告诉计算机这个函数的名字叫sale_car,
而price是里面变量的名称,即告诉系统这个变量叫price,而赋的值可以在定义变量的时候直接赋予
或者正在后边间接赋予,但是在赋予时要注意定义时未定义的变量要在已经定义的变量
而且这种操作是可以在定义函数时同步进行的:
def sale_car(price ,
color = 'red',
brand = 'carmy',
is_second_hand = 'True'):
print('price',price,
'colour',color,
'brand',brand,
'is_second_hand',is_second_hand,)
sale_car(1000)
>>>
price 1000 colour red brand carmy is_second_hand True
但是如果在定义时定义全部的变量则会导致数据溢出
如下:
def sale_car(price = 1000,
color = 'red',
brand = 'carmy',
is_second_hand = 'True'):
print('price',price,
'colour',color,
'brand',brand,
'is_second_hand',is_second_hand,)
>>> sale_car
<function sale_car at 0x00000000040AAE18>
同时如果在前后定义了变量的值,那么以后边调用函数时定义的变量值为准。
如下:
def sale_car(price ,
color = 'red',
brand = 'carmy',
is_second_hand = 'True'):
print('price',price,
'colour',color,
'brand',brand,
'is_second_hand',is_second_hand,)
sale_car(1000,color = 'blue',brand = 'bmw',is_second_hand = 'False')
>>>
price 1000 colour blue brand bmw is_second_hand False
最后需要注意的一点是:
在前面def已经定义好的参数中,已经定义好的参数需要在为定义的参数之后,否则运行时将会报错。
全局变量和局部变量
在python中有全局变量和局部变量之分
全局变量出现在def函数外部,并在外部定义,可以直接用print进行输出
局部变量是在def内部进行定义的变量,只有在函数内部使用print才能输出,在函数外使用print进行输出则会报错。
Leven = 666
def function():
a = 10
print(a)
return(Leven + a)
print(Leven)
print(function())
>>>
666
10
676
Leven = 666
def function():
a = 10
print(a)
return(Leven + a)
print(Leven)
print(function())
print(a)
>>>
666
10
676
Traceback (most recent call last):
File "C:\Users\sky\Desktop\python text\python text.py", line 8, in <module>
print(a)
NameError: name 'a' is not defined
如果想在外部输出局部变量a,则需要运用global和None将a转变为全局变量。
Leven = 666
a = None
def function():
a = 10
global a
return(Leven + a)
print(Leven)
print(function())
print(a)
>>>
666
676
10