1.切片
有时我们需要取得一个数组(list)的部分元素
例如有这样的一个数组 hsy = ['ccc','aaa','bbb']; 现在需要取前两个元素
a=[] hsy = ['ccc','aaa','bbb'] n=2 for i in range(n): a.append(hsy[i]) print (a)
a.append可以理解为在a这个空数组中插入元素
还可以对一个字符串直接截取
print('abcdefg'[:3])
2.迭代
给定一个数组(list),我们如果想遍历整个数组,这个过程成为迭代。
c++中的代码
for (i=0; i<list.length; i++) { n = list[i]; }
Python中可以遍历一些组合
for x,y in [(1,1),(2,4),(3,3)]: print (x,y)
3.列表生成器
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
可以用list(range(1, 11))
:
list(range(1, 11)) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
4.模块
我们以内建的sys
模块为例,编写一个hello
的模块:
# !/usr/bin/python # -*- coding: UTF-8 -*- 'a test module' import sys def test(): args = sys.argv if len(args)==1: print ("Hello world!") elif len(args)==2: print ('Hello, %s!' % args[1]) else: print('Too many arguments!') if _name_=='._main_': test()
这段代码有点抽象,我也是看了好半天讲解才弄明白。
import后面是代码的主要部分
使用sys模块的第一步就是导入该模块 import sys
导入sys
模块后,我们就有了变量sys
指向该模块,利用sys
这个变量,就可以访问sys
模块的所有功能。
sys
模块有一个argv
变量,argv
至少有一个元素,因为第一个参数永远是该.py文件的名称,例如:
运行python3 hello.py
获得的sys.argv
就是['hello.py']
;
最后两行代码 Python解释器为了使模块能良好的运行,这是了一个类似验证函数的东西。
5.作用域
在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_
前缀来实现的。
正常的函数和变量名是公开的(public),可以被直接引用,比如:abc
,x123
,PI
等;
类似__xxx__
这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__
,__name__
就是特殊变量,hello
模块定义的文档注释也可以用特殊变量__doc__
访问,我们自己的变量一般不要用这种变量名;
类似_xxx
和__xxx
这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc
,__abc
等;
之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。
def _private_1(name): return 'Hello, %s' % name def _private_2(name): return 'Hi, %s' % name def greeting(name): if len(name) > 3: return _private_1(name) else: return _private_2(name)
我们在模块里公开greeting()
函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting()
函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法。