python知识点
1.什么是lambda函数?它有什么好处?
1).lambda的用法:lambda是匿名函数,用法如下:lambda arg1,arg2..argN:expression using args2).优点lambda能和def做同样种类的工作,特别是对于那些逻辑简单的函数,直接用lambda会更简洁,而且省去取函数名的麻烦(给函数取名是个技术活)while True: print('123') break print('456')
123 456
for i in range(5): print("----%d----"%i) for j in range(5): if j>4: break print(j)
----0---- 0 1 2 3 4 ----2---- 0 1 2 3 4 ----3---- 0 1 2 3 4 ----4---- 0 1 2 3 4
2)continue:跳出本次循环,执行下一次
continue语句跳出本次循环,而break跳出整个循环
continue语句用来告诉python跳过当前循环的剩余语句,然后继续进行下一轮循环
continue语句用在while和for循环中
例1:continue通过if判断触发,跳出当前一层for循环,终止‘h’输出,继续下一次for
for letter in 'python': if letter == 'h': continue print('当前字母:’,letter)
当前字母: p 当前字母: y 当前字母: t 当前字母: o 当前字母: n
例2:
var = 5 while var>0: var = var - 1 if var == 3: continue print('当前变量值:',var) print('good bye!')
当前变量值: 4 当前变量值: 2 当前变量值: 1 当前变量值: 0 good bye!
如果换成了break:
var = 5 while var>0: var = var - 1 if var == 3: break print('当前变量值:',var) print('good bye!')
当前变量值: 4 good bye!
例3:continue是循环到这个点的时候,执行continue这里的某些操作,执行完了以后,继续执行满足条件的这一层循环需要做的事情,不会终止这一循环(只会跳出这一次)
for j in range(10): if j>5 and j <=8: print('我是continue特殊') print(j)
我是continue特殊 6 我是continue特殊 7 我是continue特殊 8
for j in range(10): if j>5 and j <=8: print('我是continue特殊') continue print(j)
我是continue特殊 我是continue特殊 我是continue特殊
4)pass:不做任何事情,只起到占位的作用
for element in "Python": if element == "y": pass else: print(element)
P t h o n
3.python中return的用法
return语句就是将结果返回到调用的地方,并把程序的控制权一起返回
程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return
def a(x,y): if x==y: return x,y a(3,3)
(3,3)
但是也并不是意味着一个函数体中只能有一个return语句,例如:
def test_return(x): if x>0: return x else: return 0 test_return(3)
3
递归函数中没有return的情况
def gcd(a,b): if a%b == 0: return b else: gcd(b,a%b)
4.python中‘if__name__ == '__main__':理解与总结
在python中,如果代码写的规范一些,通常会写上一句’if__name__ == '__main__'作为程序的入口,但是似乎没有这么一句代码,程序也可以运行。
程序入口
对于java、c、c++,每次开启一个程序,都必须写一个主函数作为程序的入口,也就是我们常说的main函数,如下所示,main()就是Java中的一个main函数
public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld") } }
与java、c、c++等几种语言不同的是,python是一种解释型脚本语言,在执行之前不不要将所有代码编译为中间代码,python程序运行时是从魔快顶行开始,逐行进行翻译执行,所以,最顶层(没有被缩进)的代码都会被执行,所以python中并不需要一个统一的main()作为程序的入口。在某种意义上讲,‘if__name__=='__main__':也像是一个标志,象征着java等语言的程序主入口,告诉其他程序员,代码入口在此----这是’if__name__ == '__main__:'这条代码的意义之一。
模块导入
我们知道,当我们在模块b中import模块A时,即在b模块中import A时,只要B模块代码运行到该import语句,模块A的代码会被执行
#模块A
a = 100 print('你好,我是模块A......') print(a)
#模块B
from package01 import A b = 200 print('你好,我是模块B......') print(b)
运行模块B时,输出结果如下:
你好,我是模块A……
100
你好,我是模块B……
200
如果我们A的有部分代码不想在B中运行,可以用‘if__name__ == '__main__'这行代码,可以对模块A进行修改
#模块A
a = 100 print('你好,我是模块A.......') if __name__ == '__main__': print(a)
B模块不做修改,直接执行B模块,输出结果如下:
你好,我是模块A……
你好,我是模块B……
200
此时,A模块中a的值没有被输出,所以,当你要导入某个模块,但又不想该模块的部分代码被直接执行,那就可以把代码if __name__ == '__main__'放在内部
__name__和__main__
__name__是python的内置变量,用于指代当前模块,修改上面用到的A模块和B模块,在模块中分别输出模块的名称:
#模块A
print('你好,我是模块A……') print('模块A中__name__的值:{}'.format(__name__)) print('-------------------------')
你好,我是模块A…… 模块A中__name__的值:__main__ -------------------------
#模块B
from package01 import A print('你好,我是模块B……') print('模块B中__name__的值:{}'.format(__name__)) #.fromat是传入对象
你好,我是模块A…… 模块A中__name__的值:package01.A ------------------------- 你好,我是模块B…… 模块B中__name__的值:__main__
当本模块被执行时,该模块‘__name__'的值就是’__main__',当被导入另一模块是,‘__name__’的值就是模块的真实名称
总结:当是本模块时if __name__ == '__main__'为True,__name__为__main__;如果是导入的话就是False,__name__ == package01.A

浙公网安备 33010602011771号