Decorators, generators, iterators, Json & Pickle Data serialization

Source: Internet
Author: User
Tags iterable ldap

1. List Generator: code example

1  for  in range (2)print(a)34 Run the effect as follows:5 D:\python35\python.exe D:/python Training/s14/day4/ list generation. py6 [0, 2, 4, 6, 8, ten , ]78 Process finished with exit code 0

2. High-order function

A variable can point to a function, and the argument of a function can accept a variable, that is, pass a function name as an argument to another function

The name of the inclusion function in the return value

code example:

1defTest ():2Print("int the test") 3 4defTest2 (func):5Print("In the test2") 6Print(func)7func ()8 9test2 (test)10The results are as follows:D:\python35\python.exe D:/python Training/s14/day4/higher-order functions. PY12inchThe test2<function Test at 0x000000000110e268> #这里是test的内存地址14int the testProcess finished with exit code 0

3, the decorative device

Code examples

1 Import Time2 defTimeer (func):3     defwarpper ():4Start_time=time.time ()5 func ()6Stop_time=time.time ()7         Print("The fun Runn time is %s"% (stop_time-start_time))8     returnWarpper9 @timeerTen deftest1 (): OneTime.sleep (3) A     Print("In the test1") -  - test1 () the The results of the operation are as follows: -D:\python35\python.exe D:/python Training/s14/day4/Adorner. PY - inchThe test1 -The Fun Runn time is3.000171661376953 +  -Process finished with exit code 0

Adorner with parameters

1 Import Time2 3 defTimer (func):4     defDeco (*args,**Kwargs):5Start_time=time.time ()6Func (*args,**Kwargs)7Stop_time=time.time ()8         Print("The func Runn time is%s"% (stop_time-start_time))9     returndecoTen  One@timer#test1 = Timer (test1) A deftest1 (): -Time.sleep (3) -     Print("In the test1") the  - @timer -  - deftest2 (name,age): +     Print("name:%s,age:%s"%(name,age)) -  + test1 () ATest2 ("Zhaofan", 23) at The results of the operation are as follows: -  -D:\python35\python.exe D:/python Training/s14/day4/Adorner 3.py - inchThe test1 -The Func Runn time is3.000171661376953 -Name:zhaofan,age:23 inThe Func Runn time is0.0 -  toProcess finished with exit code 0

The ultimate version of the decorator

1 Import Time2USER,PASSWD ="Zhaofan","123"3 defAuth (auth_type):4     Print("auth func:", Auth_type)5     defOuter_wrapper (func):6         defWrapper (*args,**Kwargs):7             ifauth_type=="Local":8Username = input ("Username:"). Strip ()9Password = input ("Password:"). Strip ()Ten                 ifuser = = Username andpasswd==Password: One                     Print("\033[32;1muser has passed authentication\033[0m") Ares = func (*args,**Kwargs) -                     Print("------after authentication") -                     returnRes the                 Else: -Exit"\033[31;1minvalid username or password\033[0m") -             elifauth_type=="LDAP": -                 Print("No LDAP") +         returnwrapper -     returnOuter_wrapper +  A defindex (): at     Print("Welcome to Index page") -@auth (auth_type="Local") - defHome (): -     Print("Welcome to Home Page") -     return "From home" -@auth (auth_type="LDAP") in defBBS (): -     Print("Welcome to BBS page") to  + index () - Print(Home ()) the BBS () *  $ Panax Notoginseng The results of the operation are as follows: -D:\python35\python.exe D:/python Training/s14/day4/Adorner 4.py the Auth func:local + Auth Func:ldap A Welcome to Index page the Username:zhaofan +Password:123 - User has passed authentication $ Welcome to Home Page $------After authentication -  fromHome - No LDAP the  -Process finished with exit code 0

4, through the list generation, we can create a list directly. However, with memory limitations, the list capacity is certainly limited. Also, creating a list of 1 million elements takes up a lot of storage space, and if we just need to access the first few elements, the vast majority of the space behind it is wasted.

So, if the list element can be calculated according to an algorithm, can we continue to calculate the subsequent elements in the process of the loop? This eliminates the need to create a complete list, which saves a lot of space. In Python, this side loop computes the mechanism, called the generator: Generator.

1A = [x forXinchRange (10)]2 Print(a)3 4g= (x forXinchRange (10))5 Print(g)6 The results of the operation are as follows:7D:\python35\python.exe D:/python Training/s14/day4/Generator. PY8[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]9<generator Object <genexpr> at 0x0000000000b01db0>Ten  OneProcess finished with exit code 0

Generator has only one method: __next__ ()

Generator saves the algorithm, each time it is called next(g) , computes g the value of the next element until it is calculated to the last element, no more elements are thrown when the StopIteration error occurs.

1g= (x forXinchRange (10))2 3  forIinchg:4     Print(i)5 6 7 The results of the operation are as follows:8 9D:\python35\python.exe D:/python Training/s14/day4/called by the generator. PYTen 0 One1 A2 -3 -4 the5 -6 -7 -8 +9 -  +Process finished with exit code 0

5. for There are several types of data that can be directly acting on the loop

A class is a collection of data types, such as,,, list tuple , and dict set str so on;

One is generator to include the generator and yield the generator function with the band.

These objects, which can be directly applied to for the loop, are called iterative objects: Iterable .

You can use to isinstance() determine whether an object is an Iterable object

an object that can be called by next() a function and continually returns the next value is Iterator called an iterator:.

Generators are Iterator objects, but,, list dict str Though Iterable they are, they are not Iterator .

Any object that can be used for for the loop is a Iterable type;

All objects that can be used for next() functions are Iterator types, which represent a sequence of lazy computations;

Collection data types such as list , dict ,, and str so on are Iterable not Iterator , however, you can iter() get an object from a function Iterator .

6. JSON and Pickle

Decorators, generators, iterators, Json & Pickle Data serialization

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.