Python高级编程(1)

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),可以被直接引用,比如:abcx123PI等;

类似__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函数细节,这也是一种非常有用的代码封装和抽象的方法。

猜你喜欢

转载自www.cnblogs.com/sylover/p/10474394.html