关闭

python学习笔记(2)程序结构

2000人阅读 评论(0) 收藏 举报

1. 语句的格式:
    python的程序格式挺有意思。 跟我的写东西的习惯是相似的。 比如我写的这一篇。写一个开头,然后加一个“:”,然后在下一行先写一个Tab建。呵呵。python取消了C的"{","}". 改用强制缩进的办法表示段落的起始。也就是,要注意了,是否缩进可不是可选的,是必需的。是否缩进,意思就变了,大不一样。
   
    python的语句也没有了 ";" 符号。我想作者的目的大约是想让这个语言看起来更自然而不是像C那么的古板。向自然语言一样写程序估计是所有程序员的最高梦想。
   
    注释是#,而不是//. 没有发现对应于/**/的东西。
   
   
2. 各种语句
   
    1. 判断
        if(条件):
            xxxxx
        eif():
            xxxxx
        else:
            xxxxx
           
    2. switch
    3. 循环
        用法基本一样。 只要注意冒号和缩进。不过,python没有do关键字。
        1. while           
        2. for    
           注意第一篇所说的容器的遍历。 那是经常用到的东西。
   
2. 函数
    def 函数名([参数1],[参数2]):  #注意冒号
        a = "你好"       #注意上边所说的缩进问题
      
      
    函数的结尾没有特别的标志,也是通过缩进表示的。
    如果你什么也不想干。想找一个相当于C里边的 ; 语句,那就是 pass 。 呵呵。 这种语句对空函数,空动作是非常有用的:由于python没有花括号代表程序的段落起始,你不能只写了一个函数的头然后就一个语句也不写了。 那会提示错误。这个时候你就要用 pass 语句。 函数至少要有一句话。空函数是不被允许的。
        def 函数名([参数1],[参数2]): 
            pass       #空函数,这个语句用来占位
   
    1. 参数传递:
        参数的传递一般由传值和传址两种。Basic程序里边也曾有过过程的概念。所谓的过程就是没有参数的传递,返回值有没有都可以。python里边没有明确的过程概念。 不过没有参数的函数也可以认为是过程。C里边也是一样。
       
        1. 关键字参数
            所谓的关键字参数就是可以在函数调用的时候不用例会函数定义的参数的顺序,利用函数参数的名字来指定其相应的值。
           >>> def newSort(a1,a2):
             print a2,a1             
             a2=a1
             print a2,a1       
             
            >>> newSort(a2=5,a1=3)
            5 3
            3 3
           
        2. 缺省值参数
            跟C的一样
           
        3. 函数对象
            在python里边没有函数指针的概念。但是,他的函数 和 其他的对象一样都是普通的对象类型。
            例子:
            >>> def fun1():
             print "in fun1"
           
             
            >>> def fun2(argc):
             argc()
           
             
            >>> fun2(fun1)
            in fun1
            >>>
       
    2. 返回值:
        1.  None函数
            相当于C的void 函数。python没有明确的数据类型定义。函数的返回值也就不需要明确的指定返回值的类型。
            例子:
                >>> def hello()
                SyntaxError: invalid syntax
                >>> def hello():
                 print "hello world"
               
                >>> res = hello           #这个得到函数的地址。
                >>> res
                <function hello at 0x00DB27F0>
                >>> res = hello()
                hello world
                >>> res
                >>> print res
                None
                >>> type(res)
                <type 'NoneType'>
               
               
         2. 有返回值
           例子:
                >>> def foo():
                 return "abc","list"   #默认返回的是tuple,list的不可更改版本。
               
                >>> res = foo()
                >>> res
                ('abc', 'list')
                >>> res[0]=1
               
                Traceback (most recent call last):
                  File "<pyshell#5>", line 1, in <module>
                    res[0]=1
                TypeError: 'tuple' object does not support item assignment
                >>> type(res)
                <type 'tuple'>
                >>> def foolist():
                 return ["abc","cee"]  #返回的是列表。
               
                >>> res = foolist
                >>> res
                <function foolist at 0x01671AF0>
                >>> res = foolist()
                >>> res
                ['abc', 'cee']
                >>> res[0]=1              #可以更改。
                >>> res
                [1, 'cee']              
               
       
    3. main函数:
        python的main函数没有像C的那么单独。这么写
        if __name__ == '__main__':
       
        然后运行的时候,程序就运行到底下!
   
    4. 程序运行时得到函数的注释
              
4. 程序的编写
    1. idle.bat
        Python的交互命令行模块能方便地进行小代码调试和学习。
       
        这个是python自己带的。可以编写文件,也可以就像一个控制台似的接收,解释执行命令(看见他到想起了Dos下调试汇编的debug了)。 最大的好处就是,对于短程序,比如几条语句,或者测试小例子,可以非常方便的得到最后的结果。
       
        你在python的安装文件夹里边搜索一下就找到了。上一篇所展示的很多例子都是用他来做的。它使用 “>>>” 做提示符。
       
    2. Komodo
        这个家伙是花钱的。具体价格不知道。可以支持多种脚本语言。 对于python来讲,他的格式控制,关键字提示做的的确是不错,而且像VB一样支持鼠标设置断点。傻瓜型的可视界面非常简单。
   
5. 程序调试及错误处理
    调试:
        1. print,Log
            呵呵。这个倒也不用太多说! 只是想强调一下他的重要程度。 我在前一篇<<关于搜索引擎及其开发>>中提过这个事情!
            print,经典的夹杀法。 不过,这样的脚本程序都需要夹杀的话,我们就需要担忧写这个程序的人的水平了。我们用python本来就是用他的简单,高级,不底层,适合表达自己的算法。夹杀,留给困难的程序吧!
           
        2. 断点,单步跟踪
            idle的单步调式很原始。打开一个文件以后,把主窗口的debuger选择一下,然后可以在文件窗口设置断点,跟踪,不过做的不够好。还是Komodo的方便,而且有快捷键,跟VC调试程序一般无二!不过,还是那句话,得花钱!
           
        3. linux文本模式下的调试办法
             好像没有类似gdb的东西。都是写日志。
   
6. 模块介绍
    1. 常用的模块
        看下边的中文资源
    2. C,C++开发新的模块
        这一部分比较长,大家可以看看下边几片文章。
        http://www.vckbase.com/document/viewdoc/?id=1540
        http://learn.tsinghua.edu.cn:8080/2005212716/html/boost_python.html
        http://dev.csdn.net/article/68/68158.shtm
   
   
7. 中文资源:
    http://man.lupaworld.com/content/develop/python_2_4_tut/html/index.html
    http://www.uplinux.com/download/doc/Python/python2.3tut/tut.html
    http://blog.csdn.net/shagoo/archive/2007/05/17/1613427.aspx
    http://xuzhan.us/12591_95593/    
   
语言只是一个表达方式,决定程序是否优良的都是决定于你的算法文化素质。python?Have fun!

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:85541次
    • 积分:1272
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:18篇
    • 译文:2篇
    • 评论:48条
    最新评论