zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    看《长安十二时辰》可以了解哪些算法知识
    面试官,我会写二分查找法!对,没有 bug 的那种!
    毕业十年后,我忍不住出了一份程序员的高考试卷
    扫雷与算法:如何随机化的布雷(一)
    降维打击!为什么我认为数据结构与算法对前端开发很重要
    盖尔-沙普利算法告诉你,你的对象在哪里?
    这道算法题太太太太太简单啦
    有点难度,几道和「滑动窗口」有关的算法面试题
    几道和「黑洞照片」那种海量数据有关的算法问题
    LeetCode 上最难的链表算法题,没有之一!
  • 原文地址:https://www.cnblogs.com/weiwenbo/p/6559460.html
Copyright © 2011-2022 走看看