#!/usr/bin/python
# coding:utf8
# 逻辑运算符
# and or not
# 循环
# a = 'abcdefghijklmn'
# x = 0
# for i in range(1, 101):
# x += i
# print(x)
# for i in "avcfd":
# print(i)
#
# print(i)
# d = {1: 111, 2: 222, 3: 333}
#
# print(d[x])
#
# print(d.items())
#
# for k,i in d.items():
# print(k, '=>', i)
# else:
# print('结束')
# import time
# for x in range(30):
# print(x)
# time.sleep(1)
# if x == 6:
#
# break
# 根据后面的条件 来执行 代码块
# x = ''
# while x != 'q':
# print('hello')
# x = input()
# if not x:
# break
# if x == 'c':
# continue
# print('is ok')
# else:
# print('退出')
# 函数
# a = 100
# b = 200
# def add(x, y):
# return x + y
# c = add(a, b)
# d = add(c, a)
# print(d)
# def fun():
# if True:
# print('good')
# fun()
# def fun(x, y):
# if x == y:
# print(x, '=', y)
# else:
# print(x, '!=', y)
# s1 = input()
# s2 = input()
# fun(s1, s2)
# def mashine(x=3, y='草莓'):
# print('生成一个', x, '元', y, '口味的冰淇淋!')
#
#
# mashine()
# def fun():
# a = 100
# print(a)
# print(fun())
# def f(x, y):
# print("%s : %s" % (x, y))
# t = ('json', 'name')
# f(*t)
# 传递元组 * 传递字典 **
# 字典里的key 必须跟形参一一对应,要不会报错
# 如果不一一对应 想传入数据 tt[a],tt[name]
# tt = {'x': 'json', 'y': 31}
# f(**tt)
# 处理多余实参
# def f(x, *args):
# print(x)
# print(args)
#
# f(1,2,'ewq','213')
# 以元组存储就是 * 以字典就是 **
# def fun(x, *args, **kwargs):
# print(x)
# print(args)
# print(kwargs)
# fun(1,132,33,y=2)
# Lambda 表达式
# 匿名函数 lambda 函数是一种快速定义单行的最小函数
# 是从Lisp 借用来的 可以用在任何需要函数的地方
# def f(x, y):
# return x*y
# print(f(2,3))
#
# print(g(2, 3))
# 1.使用python写一些执行脚本时,使用lambda可以省去定义函数的过程
# 让代码更加精简
# 2 对于一些抽象的。不会别的地方再复用的函数,有时候给函数起名字
# 也是一个头疼的问题 使用lambda则不需要考虑命名难题
# 3. 使用lambda在某些时候让代码更容易理解
#递归
# def f(n):
# if n > 0:
# n*f(n-1)
# reduce 方法
#在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 fucntools 模块里,如果想要使用它,
# 则需要通过引入 functools 模块来调用 reduce() 函数:
# from functools import reduce
# l = range(1, 6)
# def f(x, y):
# return x*y
# reduce(f,l)
# switch
# python 并没有提供switch
# python可以通过字典来实现switch语句功能
# def add(x, y):
# return x+y
# def jian(x, y):
# return x - y
# def cheng(x, y):
# return x*y
# def chu(x, y):
# return x/y
#
#
#
# def f(o,x,y):
# return operator.get(o)(x,y)
# print(f('+',1,2))
# 内置函数
# def a(x):
# if x < 0:
# return -x
# return x
# print(a(-1))
# a = [1,2,3]
# print(len(a))
# 使用内置函数 如果不会用 可以使用help函数进行查询
# help(round)
# 字符串的函数
# 首字母大写 capitalize
# a = 'json'
# print(a.capitalize())
#
# print(a.replace('j','aaa'))
#
# ip = '127.0.0.1'
#
# print(ip.split('.'))
# 序列处理函数
# filter
# l = range(10)
# def f(x):
# if x%2 == 0:
# return True
# print(filter(f, l))
# zip
# name = ['json', 'zou', 'tom']
# age = [20, 30, 40]
# tel = ['133', '156', '189']
# print(zip(name, age, tel))
# print(map(None, name, age, tel))
# a = [1,2,3]
# b = [4,5,6]
# def mf(x,y):
# return x*y
# print(map(mf, a, b))
# l = range(1, 101)
# for i in l:
# print(i)
# 模块
# 模块是python组织代码的基本方式
# python的脚本都是用扩展名为py的文本文件保存的
# 一个脚本可以单独运行 也可以导入另一个脚本中运行
# 当脚本被导入运行时 我们将其称为模块
# 模块名与脚本的文件名相同
# 例如我们编写了一个名为 items.py的脚本,则可在另外
# 一个脚本中用 import items语句来导入他
# 如果一个模块想用另一个模块里的方法 但是另一个模块有代码会执行
# 但是在这个模块中那段代码不需要被执行 则需要一个内置属性来解决在换个问题
# __name__
# print(__name__)
#
# if __name__ == "__main__":
# print(11)
# import string
# s = 'hello'
# print(string.capwords(s))
# 导入模块 他会找离他最近的模块
# 包
# python的模块可以按目录组织为包
# 创建一个包的步骤是:
# 建立一个名字为包名字的文件夹
# 在该文件夹下创建一个__init__.py文件
# 根据需要在该文件夹下存放脚本文件,已编译扩展及子包
# 导入的时候 import 包名.模块名 bao.module
# import bao.module
# bao.module.add(1,2)
# 总结
# 模块是hi一个可以导入的python脚本文件;
# 包是一堆按目录组织的模块和子包,目录下的__init__.py文件存放了包的信息
# 可以使用import, import as, form import 等语句导入模块和包
# import 模块名 这样引进模块想用模块里的方法 必须要跟模块名
# 如果给模块名起别名的话 : import 模块名 as 别名
# 如果后期不想跟模块名的话 : form 模块名 import 方法名