zoukankan      html  css  js  c++  java
  • Python入门-函数的使用到程序的公布安装

    Python入门-函数的使用到Python的公布安装

    本文主要适合有一定编程经验,至少掌握一门编程语言的人查看。

    文中样例大多都是简单到认识英文单词就能看懂的水平,主要讲的是Python的总体使用方法和结构。不会设计高深层次,对Python入门有一定帮助。

    Python和Java对照。会看到Python设计思想在于简洁、有用、强大,每个程序猿都值得学习和掌握。

    Python函数的定义及有用

    Python中的函数是一个命名的代码块。和Java一样,能够带0个或多个參数。主要形式如

    def $函数名($參数):
        ...
        函数体
        ...

    能够看出Python通过缩进语句取代了java中的{},将代码归组到一起。
    如Python中的基本语句:

    for item in list:
        ...
        do something
        ...
    
    while true:
         ...
         do something
         ...
    
    if true:
         ...
    else:
         ...

    写一个通过參数的类型来打印不同的结果样例:

    ###假设是一个列表类型,则循环打印,否则打印当前
    def print_test(is_list):
         if isinstance(is_list, list):
               for t in is_list:
                     print(t)
                     print_test("not list")
         else:
               print(the_list)
    

    Python中的列表能够理解卫java中的列表,元组看成java中的数组(用小括号扩住),貌似比数据更强大和简洁一点。我们能够理解为“打了鸡血”的数据,能够随便伸缩。相关方法有:

    len(list)
    list.insert(1,‘’)
    list.remove(”)
    list.append(”)

    上述实例中,用到递归调用。更具传入參数类型类递归调用自己。

    能够看到。方法名字前就加了def修饰,參数也是直接随便写。

    Python设计哲学把不论什么事物都看成了对象或集合。类型并不关心内部究竟是什么类型。变量标识符根本不须要类型。java中则声明变量时必须要表明类型。能够把Python看成高层集合,对于列表来说,里面能够存储不同类型的数值,仅仅要你给出一个名字。其它的由Python搞定

    样例中isinstance 函数为Python内置函数。和java中的 instanceof 相似。

    函数的调用。保存method.py, F5执行后,直接在shell和idle中键入:

    ### 句未加‘。’ 和写多行句子
    import method.py
    print_test(["item1","item2","item3"])

    Python程序的公布和安装

    模块化Python代码,像java一样,能够构建复杂而强大的系统。把Python代码模块化为类库,方便管理,业方便兴许的代码重用和架构。

    import sys; sys.path 产看python在计算机上存储位置。

    把上例函数封装为一个模块,然后公布安装为例:

    • 为刚写的方法文件建立一个目录:method
      把method.py 放到里面
    • 新建立一个文件 “setup.py”
      文件里为公布的元数据,编辑例如以下:
    # 元数据
    from distutils.core import setup
    
    setup(
           name       = 'CankingApp',
           version    = '1.0',
           py_modules = ['method'],
           author     = 'CankingApp',
           author_email = 'king@gmail.com',
           url        = 'www.baidu.com',
           descripthin= 'test',      
     )
    • 构建公布文件
      打开终端键入命令:

      $python3 setup.py sdist
      running sdist
      running check
      warning: check: missing required meta-data: url
      warning: sdist: manifest template ‘MANIFEST.in’ does not exist (using default file list)
      warning: sdist: standard file not found: should have one of README, README.txt
      writing manifest file ‘MANIFEST’
      creating CankingApp-1.0
      making hard links in CankingApp-1.0…
      hard linking hello.py -> CankingApp-1.0
      hard linking setup.py -> CankingApp-1.0
      Creating tar archive
      removing ‘CankingApp-1.0’ (and everything under it)

    • 按装到Python本地副本中
      终端中命令:

      $ sudo setup.py install
      /usr/lib/python3.4/distutils/dist.py:260: UserWarning: Unknown distribution option: ‘descripthin’
      warnings.warn(msg)
      running install
      running build
      running build_py
      creating build
      creating build/lib
      copying method.py -> build/lib
      running install_lib
      copying build/lib/method.py -> /usr/local/lib/python3.4/dist-packages
      byte-compiling /usr/local/lib/python3.4/dist-packages/method.py to method.cpython-34.pyc
      running install_egg_info

    操作完后会看到目录中多了builddist目录及MANIFEST文件。

    • 构建成功,測试代码

    直接在idle中測试:

    import method
    method.print_test(["item1","item2","item3"])

    測试函数调用须要加上method,是python中命名空间规定。
    Python中的全部代码都与一个命名空间关联,主程序中的代码与”main“命名空间关联。我们单独的代码模块自然自己主动创建一个与代码块同名的命名空间。

    所以须要带上method.print_test。

    from method import print_test
    print_test()
    //也能够这样用,可是假设此命名空间有同名时会冲突失效,个人觉得还是第一种比較好。

    成功打印出item则标识成功安装。

    文中实例源码已上传GitHub, 有兴趣的同学欢迎一起交流学习。


  • 相关阅读:
    设计模式之桥接模式
    设计模式之代理模式
    设计模式之原型模式
    设计模式之建造者模式
    设计模式之抽象工厂模式
    设计模式之工厂模式
    设计模式之单例模式
    FR算法(Fruchterman-Reingold)
    zoj 3822 Domination (概率dp 天数期望)
    hdu 5023 A Corrupt Mayor's Performance Art(线段树)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5207419.html
Copyright © 2011-2022 走看看