简明Python教程笔记

1. Python 程序执行

       第一种方法:直接在Python命令窗口中新建窗口,编写程序,使用Run Modules来运行程序。

        第二种方法:使用文本编写Python程序,在命令行中运行。例如>Python HelloWorld.py

       在第一篇文章中有关于如何执行的详细介绍,详细内容参考第一篇文章

 

2. 注意事项:

       在Python程序中,一定注意大小写是严格区分的,Print 和 print不同。

       确保每一行的开始字符前没有空格或制表符,这个是一个语法错误,程序无法执行。

       注释是以"#"开始的语句,任何在"#"右面的文字都是注释
       注意在Linux下的首行"#!/usr/bin/python",这句的意思是告诉shell使用什么编译器或解释器来运行文件。  


3. Python中有四种类型的数:整数、长整数、浮点数和复数。
   
       字符串,在Python中有三种,单引号'',双引号"",三引号''' '''。
 
       单引号和双引号基本相同,但是单引号可以用于双引号中,且可以正常打印。

       三引号语句时可以存在换行的,而前两者不可以。

       注释:Python中没有char类型的数据。

       注:默认地,Python希望每一行上都只是用一个语句,这样是代码更加易读。

4. Python的运算符需要注意几个地方:

       in, not in 成员运算符    is,is not 统一性测试

       ~x  按位翻转             ** 指数(幂次方)

       //  取整除,返回商的整数部分 4// 3.0得到 1.0
   
       x[index:index]  寻址段   (expression,...) 绑定或元组显示
 
       [expression,...] 列表显示 {key:datum, ...} 字典显示

       'expression, ...' 字符串转换

5. if表达式
  
       if  exp1 > exp2:

       elif exp1 > exp3:

       else:

       三个地方需要注意:else if 缩写为 elif   if,elif, else 三个结尾处要有':',其后表明是语句块。

       注:在Python中使用缩进来表示语句块。

6. While语句

       While exp1:

       else:

              exp2

       注:在Python的While语句中可以有else语句,用于while结束时执行(或者while条件不满足时执行,可以实现类似do while 的一些功能)。但是如果在while循环体内遇到了break语句,else语句将不被执行。

7. for循环

       for循环的基本形式:
       for i in range(a, b):
              statement;
       else:
       statement;

   
       1. range函数:生成一个序列的数字

              第一个参数是开始数,第二个参数为终止数字,第三个参数是步长,每一次增长的数字

       2. for 后有冒号":",else后也有":",else在for循环执行完后执行else语句。但是如果for语句体内遇到了break语句,那么else将不被执行。

       3. in后的序列,可以是任何对象,包括字符串,自定义对象等等。

       4. 内置函数 len(str); 返回字符串的长度

8. 函数

       1. 通过def关键字定义,def关键字后跟一个函数的名称,然后跟一对圆括号,括号内是一些变量名字,一冒号":"结尾,接下来是一块语句,是函数体。

       def sayHello():
              statement;


       调用函数:sayHello();

       2. 为函数加入形参:与其他变量类似,形参也不需要声明类型,直接放置想要命名的参数即可。

       3. 局部变量同其他的语言的局部变量是一样的,函数体内的局部变量不会对外部变量产生影响。
       参数的传递也是值传递,不是地址传递。

       4. 要想在函数体内修改外部变量,则需要使用全局变量,使用global语句完成全局变量声明。
       def func():
              global x;
   
              print 'x is', x;
              x = 2;
              print 'Changed local x to', x;
   
       x = 50;
       func();
       print 'Value of x is', x;
   
       输出结果:

       x is 50
       Changed global x to 2
       Value of x is 2

       由此可见,对于要进行修改的变量,必须在函数体内将变量声明为global的,才可以实现。
       例如:global x, y, z;

       5. 参数默认值,对于参数的默认值和其他的相同,默认参数应该在参数列表的最后

       6. 关键参数的概念:

       对于参数,默认按照普通参数对待,对其传参则是按照位置进行对应。

       可以使用关键参数,为参数列表的参数指定值(使用参数的名字,而非利用位置对应)。
       def func(a, b=5, c=10):
              print 'a is', a, 'and b is', b, 'and c is', c

       func(3, 7)
       func(25, c=24)
       func(c=50, a=100)
   
       好处:不需要担心参数的顺序对应,使用简单。假设参数都有默认值,仅仅需要给自己感兴趣的参数赋值即可。


       7. return语句
  
       从函数返回或跳出,也可以从函数中返回一个值

       没有返回值的语句等价于 return None;
  
       pass 在python中代表一个空语句块。

       8. DocStrings 文档字符串,被简称为docstrings。

       在函数的第一个逻辑行的字符串就是这个函数的文档字符串。

       docstring书写的习惯:一个多行字符串,首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细描述。

       强烈建议:在函数中使用文档字符串时要遵循这个惯例

       可以使用 __doc__(注意是双下划线)调用函数的文档字符串属性。

  
9. 模块

       1. 模块就是一个包含了你所定义的函数和变量,为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。

       首先要学习如何使用标准库模块。

       #!/usr/bin/python
       #Filename: using_sys.py

       import sys;   #引入sys模块

       print 'The command line arguments are:';

       for i in sys.argv:  #参数列表,打印参数列表的内容
              print i

       print '\n\nThe PYTHONPATH is', sys.path,'\n';


       注:系统在sys.path所列的目录中寻找sys.py模块,如果找到就执行。
     
       命令行参数: sys.argv[0] 是程序名称即using_sys.py ,从sys.argv[1]开始才是命令行的参数

       可以观察到sys.path的第一个字符串是空的(在Windows下是当前目录字符串),表示的是当前目录,那么模块可以放到当前目录下,也即程序所在的目录,python解释器是可以找到的。

       2. 模块 __name__

       每一个模块都有一个名称,在模块中可以通过语句来找出模块的名称。

       使用它处理这样一种情况:模块被第一次输入的时候,这个模块的主块将被运行,如果只想程序本身使用的时候运行主块,而在它被别的模块输入的时候不运行主块,可以通过模块的__name__属性完成。

       #/usr/bin/python
       #Filename : using_name.py

       if __name__ == '__main__':
              print 'This program is being run by itself';
       else:
              print 'I am being imported from another module';
   
       执行过程:
       $ python using_name.py
       This program is being run by itself

       $ python
       >>> import using_name
       I am being imported from another module
       >>>
       显然,如果模块名称是 '__main__',则说明该模块是独立运行,否则不是独立运行,是被其他模块引入。


       3. 创建自己的模块

       其实每个python程序都是一个模块。一个模块与普通的python没有特别之处。只是不需要在其中调用自己的函数,进行处理而已

       自己创建的模块的位置应该放在输入它的程序同一个目录,后者在sys.path所列出的目录,只有这样python才可以找到它。

       注:注意不要将模块中声明的变量放到了函数中,一定要注意缩进。

       模块代码:
       #!/usr/bin/python
       #Filename: mymodule.py

       def sayHi():
              print 'Hi, this is mymodule speaking.';

       version = '0.1';
       #End of mymodule.py

       调用程序代码:
       #!/usr/bin/python
       #Filename: mymodule_demo.py

       import mymodule;

       mymodule.sayHi();

       print 'Version', mymodule.version;

       4. dir()函数

       dir()函数列出模块定义的标识符,标识符有函数,类和变量。如果要列出指定模块的标识符,则需要以该模块作为参数。否则列举的是当前模块中定义的名称列表。

       >>> import sys
       >>> dir(sys)
       ['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__',    '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', 'api_version', 'argv',    'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle',    'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_traceback', 'exc_type', 'exc_value', 'excepthook',    'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval',    'getdefaultencoding', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof',    'gettrace', 'getwindowsversion', 'hexversion', 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path',    'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'py3kwarning', 'setcheckinterval',    'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version',    'version_info', 'warnoptions', 'winver']
       >>> print sys.winver
       2.7
       >>> dir()
       ['__builtins__', '__doc__', '__name__', '__package__', 'sys']
       >>> a=3
       >>> dir()
       ['__builtins__', '__doc__', '__name__', '__package__', 'a', 'sys']
       >>> del a
       >>> dir()
       ['__builtins__', '__doc__', '__name__', '__package__', 'sys']
       >>>

       其中的dir()如上所述,del a 从模块中将a变量删除掉


10. 数据结构
  
       字面理解,数据结构——可以处理一些数据的结构,或者说是用来存储一组相关的数据。

       在Python中有三种内建的数据结构—— 列表、元组和字典。

       1. 列表
  
       列表其实类似于数组,项目之间用逗号分隔。

       列表项目包括在方括号中,一旦创建了列表,可以添加、删除或是搜索列表中的项目,因此说列表是可变的数据类型

       列表使用的一个例子:
  
       #!/usr/bin/python
       #Filename: using_list.py
       #this is my shopping list
   
       # 返回list长度
       shoplist = ['apple', 'mango', 'carrot', 'banana'];
       print 'I have', len(shoplist), 'item to purchase.';
   
       # 遍历列表元素
       print 'These item are:', #Notice the comma at end of the line
       for item in shoplist:
              print item,;
   
       # 追加元素
       print '\nI also have to by rice.';
       shoplist.append('rice');
       print 'My shopping list is now', shoplist;

       # 排序元素
       print 'I will sort my list now';
       shoplist.sort();
       print 'Sorted shopping list is', shoplist;

       # 删除元素
       print 'The first item I will buy is', shoplist[0];
       olditem = shoplist[0];
       del shoplist[0];   
       print 'I bought the', olditem;
       print 'My shopping list is now', shoplist;

       注:1. 可以在列表中添加任何类型的数据,包括数和对象,甚至列表  

       2. 在print 语句最后加一个',',可以消除print语句的自动换行功能,难看而有效

       3. sort方法对列表内容进行排序,注意不是返回一个有序列表,而是修改了原始列表

       4. 删除一个元素 del shoplist[0];


       list的其他一些功能函数:
   
       1. append(...)  L.append(object) -- 在列表末尾增加一个对象
   
       2. count(...)   L.count(value)  -- 返回值为整数,返回值在列表中出现次数

       3. extend(...)  L.extend(iterable) -- 从iterable中添加元素来扩展列表

       4. index(...)   L.index(value, [start, [stop]]) 返回值为整数,第一个value的索引值
       如果值不存在,则返回ValueError值
    
       5. insert(...)  L.insert(index, object) 在index之前插入元素
 
       6. pop(...)     L.pop([index]) -- 返回值为item,移除并返回索引值处的item
       如果索引值超出范围,或者列表为空,则返回错误IndexError
 
       7. remove(...)  L.remove(value) -- 移除value在列表中的第一次出现。
       如果值不出现在列表中,则返回错误ValueError

       8. reverse(...)  L.reverse() -- 按照位置进行翻转*IN PLACE*

       9. sort(...)     L.sort(cmp=None, key=None, reverse=False) -- 稳定的排序,按照位置 *IN PLACE*;
       cmp(x, y) -> -1, 0, 1  需要传入的对比函数,如果不使用默认的按字母顺序排序,则需要重写cmp函数,并传参

       10. __len__(...)  x.__len__() <==> len(x) 

       11. __getitem__(...)     x.__getitem__(y) <==> x[y]
 
       12. __getslice__(...)    x.__getslice__(i, j) <==> x[i:j]

       13. __delitem__(...)     x.__delitem__(y) <==> del x[y]
 
       14. __delslice__(...)    x.__delslice__(i, j) <==> del x[i:j]

11. 元组

       与列表类似,只不过与字符串类似,其值是不可变的,不可以修改元组。通过圆括号中用逗号分割项目定义。

       元组的初始化 tuple = ('item1', 'item2', ,'item3');

       其中第三个元素是空值。

       与列表相同的是,将一个元组加入到另外一个元组,就相当于在这个元组的位置处是一个二维数组

 

       使用元组实现格式化输出:

       在输出元素时,可以实现元素的格式化输出,类似于C语言的格式化输出。

       在print最后,例如print 'My string is %s, my age is %d, ...' %(item1, item2,...);

       对于单一的元素,可以这样实现:print 'My element is %s' %item

       例子:
       #!/usr/bin/python
       #Filename:print_tuple.py
    
       age = 22;
       name = 'Swaroop';
    
       print '%s is %d years old' %(name, age);
       print 'Why is %s playing with that python?' %name;

   
12. 字典

       字典类似于通过联系人名字查找地址和联系人详细情况的地址薄,即键(名字) 和值(详细情况)联系在一起。键必须是唯一的。

       字典的键必须是不变的对象,而值可以是变化的对象

       键值对在字典中以这样的方式标记:d={key1:value, key2:value2}.键/值对用冒号分割,而各个对用逗号分割。在字典中的键值对之间是没有顺序的,其实就是hash。

       例子如下:
       #!/usr/bin/python
       #Filename: using_dict.py
       #'ab' is short for 'a'ddress 'b'ook
    
       ab = {'Swaroop':'swaroopch@byteofpython.info',
              'Larry':'larry@wall.org',
              'Matsumoto':'matz@ruby-lang.org',
              'Spammer':'spammer@hotmail.com'};
    
       print "Swaroop's address is %s" %ab['Swaroop'];
    
    
       # 添加一个键值对key/value
       ab['Guido'] = 'guido@python.org';
       print "The dicionary is", ab;
    
       # 删除一个键值对key/value
       del ab['Spammer'];
       print "The dicionary is", ab;
    
       print '\nThere are %d contackts in the address-book\n' %len(ab);
    
       # 遍历字典
       for name, address in ab.items():
              print 'Contact %s at %s' %(name, address);
    
       if 'Guido' in ab:
              print "\nGuido's address is %s" %ab['Guido'];


       help(dict)中其他的方法:
       1. clear(...)   D.clear() -- 删除D中所有的元素.

       2. copy(...)    D.copy() -- 复制D a shallow copy of D

       3. get(...)     D.get(k[,d]) -- 如果k在D中,则返回D[k],否则返回d. d默认是None

       4. has_key(...) D.has_key(k) -- 如果D有键k则返回True

       5. items(...)   D.items() -- 以2元组的形式返回D的键值对(key, value)

       6. iteritems(...)   D.iteritems() --指向(key, value)的一个迭代器

       7. iterkeys(...)    D.iterkeys() -- 指向D的键的迭代器

       8. itervalues(...)  D.itervalues() -- 指向D的值的迭代器

       9. keys(...)        D.keys() -- 返回D的键的列表

       如果没有找到键,如果给定了d值,则返回d,否则生成KeyError

       11. popitem(...)    D.popitem() -- (k, v), 移除和返回键值对(key, value),
        如果D是空的则发挥ErrorKey错误

       12. setdefault(...) D.setdefault(k[,d]) -- 如果k不在D中,则设置D[k]=d

       13. update(...)
        D.update(E, **F) -- None. 从dict/iterable E 和 F更新D
        如果E有a.keys()方法, does:     for k in E: D[k] = E[k]
        如果E没有 .keys()方法, does:     for (k, v) in E: D[k] = v
        如果不是上述两种for k in F: D[k] = F[k]
  
13. 序列

       列表,元组和字符串其实都是序列,最主要的就是下标索引和切片操作(就是取列表的一部分数据)

       索引操作取特定项目,切片获取一列数据

       例子:
       #!/usr/bin/python
       #Filename: seq.py
    
       shoplist = ['apple', 'mango', 'carrot', 'banana'];
    
       #indexing or 'subscription' operation
       print 'Item 0 is', shoplist[0];
       print 'Item 1 is', shoplist[1];
       print 'Item 2 is', shoplist[2];
       print 'Item 3 is', shoplist[3];
       print 'Item -1 is', shoplist[-1];
       print 'Item -2 is', shoplist[-2];
    
       #Slicing on a list
       print 'Item 1 to 3 is', shoplist[1:3];
       print 'Item 2 to end is', shoplist[2:];
       print 'Item 1 to -1 is', shoplist[1:-1];
       print 'Item start to end is', shoplist[:];
    
       #Slicing on a string
       name = 'swaroop';
       print 'characters 1 to 3 is', name[1:3];
       print 'characters 2 to end is', name[2:];
       print 'characters 1 to -1 is', name[1:-1];
       print 'characters start to end is', name[:];

       结果:
       Item 0 is apple
       Item 1 is mango    
       Item 2 is carrot
       Item 3 is banana
       Item -1 is banana  # 负数下标的-1在结尾处
       Item -2 is carrot
       Item 1 to 3 is ['mango', 'carrot']   # 截取的1-3,并不包含3
       Item 2 to end is ['carrot', 'banana']
       Item 1 to -1 is ['mango', 'carrot']
       Item start to end is ['apple', 'mango', 'carrot', 'banana']
       characters 1 to 3 is wa
       characters 2 to end is aroop
       characters 1 to -1 is waroo
       characters start to end is swaroop
        
       注:1. Python从0开始计数,与C语言相同。
      
       2. 索引可以是负数,位置从序列结尾处开始计算,shoplist[-1]标识最后一个元素

14.参考(reference)

       创建一个对象,并将它赋给一个变量,这个变量仅仅参考哪个对象,并不标识这个对象本身。也就是变量名称指向你计算机中存储那个对象的内存,这被称为名称到对象的绑定。

       参考和对象的区别如下例子所示:
       #!/usr/bin/python
       #Filename: reference.py
    
       print 'Simple Assignment';
    
       shoplist = ['apple', 'mongo', 'carrot', 'banana'];
    
       mylist = shoplist; #mylist是同一个对象的另外一个名字
    
       del shoplist[0];
       print 'shoplist is', shoplist;
       print 'mylist is', mylist;    
       # shoplist和mylist打印了相同的列表,表明他们指向同一个对象

       print 'Copy by making a full slice';
       del mylist[0]; # 删除第一个元素
        
       print 'shoplist is', shoplist;
       print 'mylist is', mylist;
       # 两个列表有不同的内容。

       注:赋值语句并不赋值列表内容,只是作参考。而要拷贝,则需要使用slice功能。

       此处使用的其实都是str类对象

 

       By Andy

       转载请注明出处,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 简明Python教程是一本经典的学习Python编程的教材,它详细介绍了Python语言的基础知识、语法规则以及常用的编程技巧。由于Python语言的简洁性和易读性,这本教程也以其简明扼要的风格而闻名。 该教程的源码是基于Python语言编写的,通过分章节、分小节的方式详细展示了每个知识点的代码示例和用法。这些源码不仅能够帮助读者更好地理解Python的语法和概念,还能够通过实例让读者快速掌握各种编程技巧。 在教程的源码中,读者可以学习到Python语言的基本数据类型(如整型、浮点型、字符串、列表等)的使用方法,以及常见的控制流语句(如条件判断和循环)的应用。同时,源码还介绍了Python的函数定义和调用、模块导入和使用、异常处理等高级编程特性,使得读者可以更加深入地理解和运用Python语言。 此外,简明Python教程的源码还包含了一些实际应用的示例,如文件读写、网页爬虫、数据分析等方面,这些示例可以帮助读者将Python的基础知识应用到实际项目中。 总之,简明Python教程的源码是一个非常有用的参考资料,可以帮助读者快速上手Python编程,提高自己的编程水平。无论是初学者还是有一定编程经验的人都可以通过这个源码获得很大的收益。 ### 回答2: 简明Python教程是一本详细介绍Python编程语言的教程书籍,该教程书籍作者是A Byte of Python(草python)开发组,该书的作者是Swaroop C H(Ankit Fadia写的教程是假的),本书是一个开源的项目,其源码可以在GitHub上找到并下载。 该教程的源码是以文档的形式呈现,每个章节对应一个Python脚本文件。该教程Python的基本概念开始介绍,包括变量、数据类型、运算符、控制流程等基础知识。接着介绍了Python的函数、模块、错误处理、输入输出以及文件操作等进阶内容。最后通过实例演示了如何使用Python进行网络编程、数据库操作以及GUI界面开发等高级应用。 阅读该教程的源码可以更好地理解教程中的知识点,并通过实际的代码示例来加深对Python的理解和掌握。源码中的注释详细解释了每个代码片段的作用和用法,对于初学者来说非常友好。 通过阅读源码,我们不仅可以学习到Python语言的基础知识,还能了解到良好的编程风格和习惯。源码的组织结构清晰,代码风格简洁易懂,对于初学者来说非常适合作为学习和参考的材料。 总之,简明Python教程的源码是一个非常宝贵的学习资源,通过阅读和运行源码,我们可以更好地掌握Python编程语言,并用它来解决实际的问题。希望每个对Python感兴趣的人都能够通过阅读该教程的源码,快速入门并提升编程能力。 ### 回答3: 简明Python教程源码是指用来编写简明Python教程的源代码。源代码是编程语言的原始文本形式,是计算机程序的基础。简明Python教程源码可能包含了一系列的Python语句、函数和类,用来演示和说明Python编程的基本概念和用法。 简明Python教程源码的结构通常会根据教程的内容来设计。例如,如果教程介绍了Python的基本语法,那么源码可能会包含一些简单的变量赋值、算术运算和控制流语句的示例。 如果教程涉及到Python的常用库或模块,源码可能会导入这些库,并展示它们的用法。例如,如果教程涉及到文件操作,源码可能会使用Python的`open`函数来打开文件,并使用`read`或`write`方法来读取或写入文件内容。 除了基本语法和常用库之外,简明Python教程的源码还可能包括一些更高级的概念和技巧示例。例如,如果教程涉及到面向对象编程,源码可能会定义一些类和方法,并展示它们的继承和多态特性。 总的来说,简明Python教程源码是一个用来教授Python编程的示例代码集合。它可以帮助初学者理解Python语言的基本概念和用法,并通过实例演示不同应用场景的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值