Python 函数基本概念
函数基本概念
函数是对程序逻辑进行结构化或过程化的一种编程方法
将整块代码巧妙地隔离成易于管理的小块,把重复代码放到函数中而不是进行大量的拷贝,这样既能节省空间,也有助于保持一致性,通常函数都是用于实现某一种功能
定义一个函数,定义函数不执行函数的调用加()
#!/usr/bin/env python def pstar(): print '*' * 20 print '#' * 20 pstar() pstar()
/usr/bin/python2.6 /root/PycharmProjects/untitled10/fun.py
********************
####################
********************
####################
Process finished with exit code 0
不写括号是对函数的引用
调用与引用
引用是一个指针,函数在内存中的地址
#!/usr/bin/env python def pstar(): print '*' * 20 print '#' * 20 a = pstar() b = pstar print a print 'hello' b() /usr/bin/python2.6 /root/PycharmProjects/untitled10/fun.py ******************** #################### None hello ******************** #################### Process finished with exit code 0
函数很少会有raw_input
通过参数的方式传入
def pstar(num): return '*' * num n = int(raw_input("Please enter number:")) a = pstar(n) print a /usr/bin/python2.6 /root/PycharmProjects/untitled10/canshu.py Please enter number:10 ********** Process finished with exit code 0
num 形式的参数 形参 n是实际的参数 实参
默认参数
def pstar(num=20): return '*' * num print pstar() /usr/bin/python2.6 /root/PycharmProjects/untitled10/canshu.py ******************** Process finished with exit code 0
之前写的 模拟cp操作写成函数的形式
#/usr/bin/env python def cp(): sfname = open('/bin/ls') dfname = open('/tmp/ls','w') while True: data = sfname.read(4069) if not data: break dfname.write(data) sfname.close() dfname.close() cp()
改进函数
#/usr/bin/env python def cp(sfname,dfname): src_fobj = open(sfname) dst_fobj = open(dfname,'w') while True: data = src_fobj.read(4069) if not data: break dst_fobj.write(data) src_fobj.close() dst_fobj.close() cp('/tmp/ls','/tmp/ls.old') [root@localhost ~]# md5sum /tmp/ls 062551aec6c44f228777fde0ea992a65 /tmp/ls [root@localhost ~]# md5sum /tmp/ls.old 062551aec6c44f228777fde0ea992a65 /tmp/ls.old
位置参数
通过位置传入参数
#/usr/bin/env python import sys def cp(sfname,dfname): src_fobj = open(sfname) dst_fobj = open(dfname,'w') while True: data = src_fobj.read(4069) if not data: break dst_fobj.write(data) src_fobj.close() dst_fobj.close() cp(sys.argv[1],sys.argv[2]) [root@localhost untitled10]# python cp.py /etc/hosts /tmp/hosts [root@localhost untitled10]# md5sum /etc/hosts 54fb6627dbaa37721048e4549db3224d /etc/hosts [root@localhost untitled10]# md5sum /tmp/hosts 54fb6627dbaa37721048e4549db3224d /tmp/hosts