今日有点晚,上午去hilston开会 广东省科学院&白俄罗斯科学院所长会议。。。学习了一个上午,简直收获良多。。下午又多问题处理。。。。网站又聚餐。。只能回来加加班处理一下今日的内容了(不坚持,又被遗忘了),还是要坚持一下学习Python,不然真是忘记忘记再忘记,之后就不搞了。。。
今日我们说函数:
1. 函数 从小学-初中经常说的x = y+1 ,x,y都是有因果关系的,我们叫函数。今日我们在编程说的函数有区别的。他是一个代码的报装,当然也有因果关系。你执行/调用有相关的结果。例如:
def abc():
print("帅哥")
### def 是 define的缩写,定义函数必须有的开头;
### abc 是函数名字。。。方便调用。。。。其实可以这里理解 变量= xxxx ;同理 abc = 代码;abc也是一个变量名字/函数名字。。。。
### print("帅哥") 是代码---叫函数体(可以有N行)
### () 用来干啥的?有参数 你可以放。。没有你可以不放。。。
格式:
def 函数名(参数):
函数体
就这样的格式。。。。。。我们说一下 参数。。。(但是不建议大家死机,只要知道位置参数就可以了)
def abc(a,b,c):
print(a)
print(b)
print(c)
####这里要说一下 调用 abc(1,2,3) 这样个就是调用
def abc(a,b,c) ##a,b,c 叫位置参数
abc(1,2,3,) ##1,2,3 叫实参
参数还分:位置参数,默认参数,不定长参数。。。是不是有点蒙?还是记得一种就可以了。。其他跟进自己积累慢慢来就可以了。
不过我们还是要说一下:
1. 默认参数:
def abc(a,b,c=5)
print(a)
print(b)
print(c)
abc(1,3) ##输出 1,3,5 ###为什么不用3个实参,就可以输出5? 这就是默认参数的作用,注意:位置参数是固定的a,b 就是1,3 不可能 a=3,b=1 位置参数是死的。。
2. 不定长参数.
def abc(*args):
print(args)
abc(1,3,4,5) ###输出是 元组 tuple....如何抽取?
def abc(*args):
#print(args)
for i in args:
print(i)
abc(1,3,4,5) ####看看区别,是不是一个个显示的。。。
所以一般人,我们不用*args,但是有时候迫于项目变化,预计到未知,还是可以这样处理一下。。。
不长参数,还有一个就是 **kargs ;跟*args 有什么区别,多一个*k
def abc(**kargs):
print(kargs)
abc(a=1,b=2,c=3) ###你会发现他是一个字典。。。所以如果不知道未来发展用多少个参数,但是又要为他做准备,开了一下字典这种吧,跟默认参数是不是有点像。。。。这样直接在函数体做 添加吗。。。。
######################################################################################
函数中的 return 还是要说一下。。。
有些函数是不会有 return ,因为它不会 对返回值有处理,有想法。这里我们要说明一下,你不添加(默认 return是 None),
一般函数体执行完毕,如果你有对返回值有进一步处理,你就会定义,后面编码时候有关联。是不是很抽象?
举例:
def abc(a,b):
if a>b:
print("a>b")
elif a<b:
print("a<b")
else:
return 0
a=abc(1,1)
if a = 0:
print("samly71非常帅")
else:
print("ugy")
---------------------是不是很多判断?复习一下吧,但是我们这里只要看 else : return 0 ,然后 samly71非常帅....
return 终止了函数的运行了,返回 0 到函数调用,a=0 了,然后你做一次判断,我这里例子非常简单,日后你的项目用来就不简单了。。。
#######################################################################################
局部作用域;
全部作用域;
def abc():
a= xxxx
##########a就是局部 作用域,他是无法被外部 print(a)的。。。。
如果你是
a=xxxx
def abc():
print(a)
print(a)
##############a被print 2次。。。。
有些前辈会告诉你,如果你在第1个情况,还想被外部调用 golbal a=xxxx 也是可以的,但是合理会有很对风险,一般我作为新人,基本不用。。。还是老实一点好。。。。
#################################################
函数嵌套:
def a():
print("帅气")
def b():
Print("是的,非常好")
a()
b() ##回车后。。。
“是的,非常好”
“帅气”
---------------为什么是这个顺序?
1. 在b() 调用前,上面的都只是放在内存,没有执行;
2. 在b 调用了 a 这时候才执行a的内容,所以他在后面。。。。
+++++++++++++++++++++++++++++++++++++++++++
是不是内容多了一点,但是非常简单,因为我们用最简单的例子,来搞掂你的疑惑,内容不用多,也不用难。
关键还是知道这函数什么,然后
函数就是用来 精简你的 代码的,重复的内容,就尝试去定义 函数吧。。。。例如
print("samly71帅气“) ##打印1000次。。。。你牛逼了
print
print
print
----------------1000次,回头第1个炒你。。。
也许你想到
for i in range(1,1001):
print("samly71帅气“)
-----------------确实有进步,但是如果 5000次呢?还有如果是你呢?
number = input("打印的次数: ")
content = input("输出的内容: ")
def print_content(number,content):
number = int(number)
##py2 python3 对input的类型是不一样的。。
for i in range(1,number+1):
print(content)
print(number,content)
-----------------是不是,觉得比之前好多了?是的,需求对新人来说应该不断去消化,对自己提要求。。。
原文地址:https://blog.51cto.com/323248/2427885