Python——property属性、with语句、生成器、浅拷贝、深拷贝 学习笔记
property属性
class Person ( object ) :
def __init__ ( self) :
self. __age = 0
def get_age ( self) :
return self. __age
def set_age ( self, new_age) :
if new_age > 0 and new_age < 130 :
self. __age = new_age
print ( "执行了" )
else :
print ( "成精了!" )
age = property ( get_age, set_age)
p = Person( )
print ( p. age)
with语句
with open ( "test.txt" , "r" ) as file :
read = file . read( )
print ( "系统 open:%s" % read)
class File ( object ) :
def __init__ ( self, file_name, file_model) :
self. file_name = file_name
self. file_model = file_model
def __enter__ ( self) :
print ( "进入上文方法" )
self. file = open ( self. file_name, self. file_model)
return self. file
def __exit__ ( self, exc_type, exc_val, exc_tb) :
print ( "进入下文方法" )
self. file . close( )
if __name__ == '__main__' :
with File( "test.txt" , "r" ) as file :
file_data = file . read( )
print ( "方法一:%s" % file_data)
生成器
my_generator = ( i * 2 for i in range ( 5 ) )
print ( my_generator)
for value in my_generator:
print ( value)
def fibonacci ( num) :
"""
生成器使用场景
:param num:
:return:
"""
a = 0
b = 1
current_index = 0
while current_index < num:
result = a
a, b = b, a + b
current_index += 1
yield result
fib = fibonacci( 5 )
for value in fib:
print ( value)
浅拷贝
import copy
num1 = 1
num2 = copy. copy( num1)
print ( "num1:" , id ( num1) , "num2:" , id ( num2) )
my_tuple1 = ( 3 , 5 )
my_tuple2 = copy. copy( my_tuple1)
print ( "my_tuple1:" , id ( my_tuple1) , "my_tuple2:" , id ( my_tuple2) )
my_list1 = [ 1 , 3 , [ 4 , 6 ] ]
my_list2 = copy. copy( my_list1)
print ( "my_list1:" , id ( my_list1) , "my_list2:" , id ( my_list2) )
my_list1. append( 5 )
print ( my_list1, my_list2)
print ( "my_list1[2]:" , id ( my_list1[ 2 ] ) , "my_list2[2]:" , id ( my_list2[ 2 ] ) )
my_list1[ 2 ] . append( 3 )
print ( my_list1, my_list2)
print ( "*" * 10 , "我是分割线" , "*" * 10 )
深拷贝
import copy
num1 = 1
num2 = copy. deepcopy( num1)
print ( "num1:" , id ( num1) , "num2:" , id ( num2) )
str1 = 'hello'
str2 = copy. deepcopy( str1)
print ( "str1:" , id ( str1) , "str2:" , id ( str2) )
my_tuple1 = ( 1 , [ 1 , 2 ] )
my_tuple2 = copy. deepcopy( my_tuple1)
print ( "my_tuple1:" , id ( my_tuple1) , "my_tuple2:" , id ( my_tuple2) )
print ( "my_tuple1[1]:" , id ( my_tuple1[ 1 ] ) , "my_tuple2[1]:" , id ( my_tuple2[ 1 ] ) )
my_tuple2[ 1 ] . append( 4 )
print ( my_tuple1, my_tuple2)
print ( "my_tuple1[0]:" , id ( my_tuple1[ 0 ] ) , "my_tuple2[0]:" , id ( my_tuple2[ 0 ] ) )
my_list1 = [ 1 , [ 2 , 3 ] ]
my_list2 = copy. deepcopy( my_list1)
print ( "my_list1:" , id ( my_list1) , "my_list2:" , id ( my_list2) )
print ( "my_list1[1]:" , id ( my_list1[ 1 ] ) , "my_list2[1]:" , id ( my_list2[ 1 ] ) )