diff options
| -rw-r--r-- | csharp.html.markdown | 8 | ||||
| -rw-r--r-- | python.html.markdown | 48 | ||||
| -rw-r--r-- | zh-cn/c-cn.html.markdown | 4 | 
3 files changed, 54 insertions, 6 deletions
diff --git a/csharp.html.markdown b/csharp.html.markdown index 12bdf168..81b50e08 100644 --- a/csharp.html.markdown +++ b/csharp.html.markdown @@ -106,7 +106,7 @@ namespace Learning              Console.WriteLine(fooString);              // You can access each character of the string with an indexer: -            char charFromString = fooString[1]; // 'y' +            char charFromString = fooString[1]; // => 'e'              // Strings are immutable: you can't do fooString[1] = 'X';              // Compare strings with current culture, ignoring case @@ -174,7 +174,7 @@ on a new line! ""Wow!"", the masses cried";              int i1 = 1, i2 = 2; // Shorthand for multiple declarations              // Arithmetic is straightforward -            Console.WriteLine(i1 + i2 - i1 * 3 / 7); // +            Console.WriteLine(i1 + i2 - i1 * 3 / 7); // => 3              // Modulo              Console.WriteLine("11%3 = " + (11 % 3)); // => 2 @@ -242,7 +242,7 @@ on a new line! ""Wow!"", the masses cried";              int fooDoWhile = 0;              do              { -                //Iterated 99 times, fooDoWhile 0->99 +                //Iterated 100 times, fooDoWhile 0->99                  fooDoWhile++;              } while (fooDoWhile < 100); @@ -588,7 +588,7 @@ on a new line! ""Wow!"", the masses cried";              AIST,              BMC,              Electra = 42, //you can explicitly set a value to a name -            Gitane +            Gitane // 43          }          // We defined this type inside a Bicycle class, so it is a nested type          // Code outside of this class should reference this type as Bicycle.Brand diff --git a/python.html.markdown b/python.html.markdown index 941ba9f4..15f27d37 100644 --- a/python.html.markdown +++ b/python.html.markdown @@ -473,6 +473,54 @@ import math  dir(math) +#################################################### +## 7. Advanced +#################################################### + +# Generators help you make lazy code +def double_numbers(iterable): +    for i in iterable: +        yield i + i + +# generator creates the value on the fly +# instead of generating and returning all values at once it creates one in each iteration +# this means values bigger than 15 wont be processed in double_numbers +# note range is a generator too, creating a list 1-900000000 would take lot of time to be made +_range = range(1, 900000000) +# will double all numbers until a result >=30 found +for i in double_numbers(_range): +    print(i) +    if i >= 30: +        break + + +# Decorators +# in this example beg wraps say +# Beg will call say. If say_please is True then it will change the returned message +from functools import wraps + + +def beg(_say): +    @wraps(_say) +    def wrapper(*args, **kwargs): +        msg, say_please = _say(*args, **kwargs) +        if say_please: +            return "{} {}".format(msg, "Please! I am poor :(") +        return msg + +    return wrapper + + +@beg +def say(say_please=False): +    msg = "Can you buy me a beer?" +    return msg, say_please + + +print(say())  # Can you buy me a beer? +print(say(say_please=True))  # Can you buy me a beer? Please! I am poor :( + +  ```  ## Ready For More? diff --git a/zh-cn/c-cn.html.markdown b/zh-cn/c-cn.html.markdown index ecd2558e..223f6e35 100644 --- a/zh-cn/c-cn.html.markdown +++ b/zh-cn/c-cn.html.markdown @@ -331,8 +331,8 @@ printf("%d\n", (char)100.0);  ///////////////////////////////////////  // 指针变量是用来储存内存地址的变量 -// 指针变量的声明也会告诉它所指向的数据的类型  -// 你可以得到你的变量的地址,并对它们搞乱。 +// 指针变量的声明也会告诉它所指向的数据的类型 +// 你可以使用得到你的变量的地址,并把它们搞乱,;-)  int x = 0;  printf("%p\n", &x); // 用 & 来获取变量的地址  | 
