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
原文地址:https://www.cnblogs.com/weiwenbo/p/6559460.html