python操作(五):函数、变量及类

变量

在 python 中,类型属于对象,变量是没有类型的,Eg:a=[1,2,3],其中[1,2,3] 是 List 类型,而变量 a 没有类型,它仅仅是一个对象的引用

函数的参数传递

不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

1
2
3
4
5
6
7
8
9
10
def changeme( mylist ):
mylist.append([1,2,3,4])
print ("函数内取值: ", mylist)
return

mylist = [10,20,30]
changeme( mylist )
#函数内取值: [10, 20, 30, [1, 2, 3, 4]]
print ("函数外取值: ", mylist)
#函数外取值: [10, 20, 30, [1, 2, 3, 4]]

关键词参数

python中调用关键词参数,不用注意顺序,解释器会自动进行匹配

1
printinfo( age=50, name="runoob" )

python遍历:

Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表

1
2
3
4
range(5)
#range(0, 5)
list(range(5))
#[0, 1, 2, 3, 4]

在序列中遍历时,索引位置和对应值可以使用 enumerate() 函数同时得到:

1
2
3
4
5
6
7
for i, v in enumerate(['tic', 'tac', 'toe']):
print(i, v)
'''
0 tic
1 tac
2 toe
'''

同时遍历两个或更多的序列,可以使用 zip() 组合:

1
2
3
4
5
questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
print('What is your {0}? It is {1}.'.format(q, a))
#What is your name? It is lancelot.

python类:

1
2
3
4
5
6
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i) # 输出结果:3.0 -4.5

self是类的实例,不是类本身,且并不是一个关键字,也可以使用 this/toor等,但是最好还是按照约定是用self

python类方法/函数:

在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。

python类属性

__private_ attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问,但可以通过调用类的公有函数访问。在类内部的方法中使用时 self.__private_attrs。