Learn Python the Hard Way,ex37-1

本练习为复习python的符号和关键字

关键字有:

 

#and or False True
print(1==0 and 2==0, 1==0 or 2==0)
print(False)
print(True)
输出:

False False
False
True

lists = ['1', '2', 'a', 'afds', 3, 463]
"""
del:Deletion of a target list recursively deletes each target, from left to right.
for……in print 
if……elif……else
"""
# del lists[] values/name
for i in range(0,len(lists)):
    print(lists, end='\t')
    del lists[0]
    print(lists)
del lists
if 'lists' not in locals().keys():
    print("lists is not variable")
elif 'lists' in locals().keys():
    print("lists is variable")
else:
    pass
输出结果:

['1', '2', 'a', 'afds', 3, 463] ['2', 'a', 'afds', 3, 463]
['2', 'a', 'afds', 3, 463] ['a', 'afds', 3, 463]
['a', 'afds', 3, 463] ['afds', 3, 463]
['afds', 3, 463] [3, 463]
[3, 463] [463]
[463] []
lists is not variable

""" 
pass: "pass" is a null operation 
def class
"""
def temp_function(): # a function that does nothing (yet)
    pass
class temp_class:  # a class with no methods (yet)
    pass
"""
with EXPRESSION as TARGET:
       SUITE
is semantically equivalent to:

   manager = (EXPRESSION)
   enter = type(manager).__enter__
   exit = type(manager).__exit__
   value = enter(manager)
   hit_except = False

   try:
       TARGET = value
       SUITE
   except:
       hit_except = True
       if not exit(manager, *sys.exc_info()):
           raise
   finally:
       if not hit_except:
           exit(manager, None, None, None)
"""
with open("temp.txt") as fp:
    lines = fp.readlines()
    i = 0
    while i < len(lines):
        if i == 3:
            i += 1
            continue
        print("%d:" % i, lines[i])
        i += 1
#is semantically equivalent to:        
try:
    fp = open("temp.txt")
    lines = fp.readlines()
    i = 0
    while i < len(lines):
        if i == 3:
            i += 1
            continue
        print("%d:" % i, lines[i])
        i += 1
except:
    print("ERROR!!")
else:
    print("There nothing to print!")
finally:
    print("This is finally print!")

输出结果:

0: a

1: applw

2: sjklfjs

4: 发的是加费的

5: drwjksjfr
0: a

1: applw

2: sjklfjs

4: 发的是加费的

5: drwjksjfr
There nothing to print!
This is finally print!


  tuples = ('1', '2', 'a', 'afds', 3, 463)
   sets = {'1', '2', 'a', 'afds', 3, 463}

"""
is
"""
if tuples is not sets:
    print("tuple is noe sets!")
输出结果:
tuple is noe sets!
"""
yield: *generator* function
    yield_stmt ::= yield_expression
"""  
def foo(n):
    a, b = 0, 1
    while 0 < n:
        print(b)
        a,  b = b, a+b
        n -=1
def foo1(n):
    a, b = 0, 1
    L = []
    while 0 < n:
        L.append(b)
        print(L)
        a,  b = b, a+b
        n -=1
    return L  
def foo2(n):
    a, b = 0, 1
    while 0 < n:
        yield b
        a,  b = b, a+b
        n -=1   

foo(5)
foo1(5)
for i in foo2(5):
    print(i)
输出结果:

1
1
2
3
5
[1]
[1, 1]
[1, 1, 2]
[1, 1, 2, 3]
[1, 1, 2, 3, 5]
1
1
2
3
5

"""
lambda
    lambda_expr        ::= "lambda" [parameter_list] ":" expression
    def <lambda>(parameters):
        return expression
"""
fp = lambda para : open(para) 
print(fp("temp.txt").readlines())
"""
async for TARGET in ITER:
       SUITE
   else:
       SUITE2
iter = (ITER)
   iter = type(iter).__aiter__(iter)
   running = True

   while running:
       try:
           TARGET = await type(iter).__anext__(iter)
       except StopAsyncIteration:
           running = False
       else:
           SUITE
   else:
       SUITE2
"""

import asyncio
import time

async def test2(i):
    r = await other_test(i) #uspend the execution of *coroutine* on an *awaitable* object.
    print("*****",i,r)
 
async def other_test(i):
    r = i
    print(i,end="*\t")
    await asyncio.sleep(0)
    print(time.time()-start)
    return r
 
url = ["https://segmentfault.com/p/1210000013564725",
        "https://www.jianshu.com/p/83badc8028bd",
        "https://www.baidu.com/"]
 
loop = asyncio.get_event_loop() # Get the event loop for the current context.
task = [asyncio.ensure_future(test2(i)) for i in url] #Wrap a coroutine or an awaitable in a future.
start = time.time()
loop.run_until_complete(asyncio.wait(task)) #Wait for the Futures and coroutines given by fs to complete.
endtime = time.time()-start
print(endtime)
loop.close()
输出结果:

https://segmentfault.com/p/1210000013564725* https://www.jianshu.com/p/83badc8028bd* https://www.baidu.com/* 0.0
***** https://segmentfault.com/p/1210000013564725 https://segmentfault.com/p/1210000013564725
0.0019965171813964844
***** https://www.jianshu.com/p/83badc8028bd https://www.jianshu.com/p/83badc8028bd
0.0029840469360351562
***** https://www.baidu.com/ https://www.baidu.com/
0.0039823055267333984

"""
local global nonlocal
"""
sets = {'1', '2', 'a', 'afds', 3, 463}
def temp_global():
    global sets
    print("temp_global", sets)
    sets.add('temp') #+ 
    print(1, sets)
    sets.update('temp') #+ 重复的就不添加了,可以添加多个
    print(2, sets)
    sets.remove('1')    #- 没有会提示错误
    print(3, sets)
    sets.discard('temp')    #- 没有不提示错误
    sets.pop()     #- 随机删除
    print(4, sets)
def temp_local():
    print("temp_local", sets)
    sets.add('1') #+ 
    print(1, sets)
    sets.update('temp') #+ 重复的就不添加了,可以添加多个
    print(2, sets)
    sets.remove('1')    #- 没有会提示错误
    print(3, sets)
    sets.discard('temp')    #- 没有不提示错误
    sets.pop()     #- 随机删除
    print(4, sets)
def temp_nonlocal():
    name = ['1', '2']
    def temp_nonlocal_fuc():
        nonlocal name   
        name.append('3')
        return name
    return temp_nonlocal_fuc 
    
    
temp_global()
print("*", sets)
temp_local()
print("**", sets)
tn = temp_nonlocal()
print(tn()) #不可单独调用
print(tn())
输出结果:

temp_global {'2', 3, 'a', 'afds', 463, '1'}
1 {'2', 3, 'a', 'temp', 'afds', 463, '1'}
2 {3, 463, 'e', 'm', '2', 'a', 'afds', 'p', '1', 't', 'temp'}
3 {3, 463, 'e', 'm', '2', 'a', 'afds', 'p', 't', 'temp'}
4 {463, 'e', 'm', '2', 'a', 'afds', 'p', 't'}
* {463, 'e', 'm', '2', 'a', 'afds', 'p', 't'}
temp_local {463, 'e', 'm', '2', 'a', 'afds', 'p', 't'}
1 {463, 'e', 'm', '2', 'a', 'afds', 'p', 't', '1'}
2 {463, 'e', 'm', '2', 'a', 'afds', 'p', 't', '1'}
3 {463, 'e', 'm', '2', 'a', 'afds', 'p', 't'}
4 {'e', 'm', '2', 'a', 'afds', 'p', 't'}
** {'e', 'm', '2', 'a', 'afds', 'p', 't'}
['1', '2', '3']
['1', '2', '3', '3']

 

posted @ 2020-12-02 17:00  cdan134  阅读(57)  评论(0)    收藏  举报