【第12天】python全栈从入门到放弃

2019-08-08  本文已影响0人  36140820cbfd

1.函数传递多个位置参数,求他们的和

代码块
def func(*args):
    sum=0
    for i in args:
        sum=sum+i
    return sum

#实例化
print(func(*(1,3,4,5,67)))   #用*把元组打散

2. nonlocal的应用

代码块
def func():
    a=1
    print(a)
    def func2():
        nonlocal  a
        a=6
        print(a)
    print(a)
    func2()
    print(a)
func()

#1  1  6   6

3.写一个函数,接收n个参数. 返回最大值和最小值。

第一种方法

代码块:第一种方法
def func(*args):
    print('最大值是%d,最小值是%d'%(max(args),min(args)))

func(1,2,3,55,7)

第二种方法:

代码块:第二种方法
def func(*agrs):
    maxvalue=agrs[0]
    minvalue=agrs[0]
    for i in agrs:
        if i >maxvalue:
            maxvalue=i
        if i < minvalue:
            minvalue=i
    print('最大值是%d,最小的是%d'%(maxvalue,minvalue))

func(1,2,3,45,56,12,44)

4.利用笛卡尔乘积,将一副扑克牌以元组的形式添加到一个列表中

代码块
color=['红桃','黑桃','方片','梅花']
num=['1','2','3','4','5','6','7','8','9','10','J','Q','K']
res=[]
for i in color:
    for m in num:
        res.append((i,m))
print(res)

5.如果默认值参数是一个可变的数据类型, 如果有人调用的时候改变了他. 其他位置看到的也跟着改变了

代码块
def func(value,list=[]):
    list.append(value)
    return list

a=func(1)
print(a)    #[1]

b=func(2,[])
print(b)   #[2]

c=func(666)
print(c)    #[1, 666]

print(a)    #[1, 666]   思考,为什么此时a也变化了?

6.打印1个99乘法口诀表

代码块
a=1
while a<=9:
    b=1
    while b<=a:
        print('%d*%d=%d'%(b,a,a*b),end='')
        b+=1
    print('')
    a+=1

7.函数名的应用

1.赋值

2.作为list元素

3.作为参数

4.作为返回值

8.闭包(内部函数访问外部函数的局部变量.)

1.安全,因为全局变量暴露不安全

2.常驻内存. 提高效率

9. 迭代器和可迭代对象

可迭代对象(Iterable):内部包含iter(),没有next()

迭代器(Iterator): 内部含有iter() next()

str, list, tuple, set, dict,f,range都是可迭代对象,都可以使用for循环遍历内容

其中f也是迭代器

迭代器好处

迭代器的特点:

1.省内存

2.惰性机制

3.只能向前.

10. 可以把函数作为参数, 传递给另一个函数

代码块
def func(a):
    a()

def func1():
    print('我是一个函数')
    return func1

func(func1)

11.闭包

代码块
def func():
    name='wangsiyu'
    def func2():
        print('我是%s'%name)     #内层函数调用外层函数的变量就是闭包,常驻内存,更安全。
    return func2

res=func()
res()   #相当于执行的是func2()

12.闭包的例子

代码块
from urllib.request import  urlopen

def func():
    content=urlopen('http://www.h3c.com/cn').read()
    def func2():
        return content   #闭包,调用了外层函数的变量。
    print(func2.__closure__)  #查看func2()是否闭包
    return func2

a=func()  #开始加载网页内容、
print(a())    #获取网页内容,是html文件

12. dir()来查看一个对象,数据类型中包含了哪些方法

代码块
a=[1,2,3,4]
b=(1,2,3,4,77)
# print(dir(a))

print('sort' in dir(a))    #查看对象a中是否有‘sort’这个方法
print('__iter__' in dir(a))
print('helle' in dir(a))

13怎样获取可迭代对象的迭代器

代码块
name=['wangsiyu','zhangdejun','zhaochongchng','gongxudong']
a=name.__iter__()  #获取到可迭代对象的迭代器

#用迭代器来拿元素,每次一个
print(a.__next__())
print(a.__next__())
print(a.__next__())
print(a.__next__())   #第四次打印'gognxudong',再往后面就开始报错了。

14. 用列表来模拟一个for循环

代码块
lst=['hello','worled','wangsiyu']  #这是一个可迭代对象,但是不是迭代器。

it=lst.__iter__()   #拿到迭代器,利用循环,就可以遍历

while 1:
    try:
        print(it.__next__())
    except:
        break

15. 导入模块包iterable和iterator来判断是否是迭代器

代码块
from  collections import Iterable
from  collections import Iterator

a=[1,2,3]
b=123
#isinstance(对象,类型) 判断某个对象是不是某个类型

print(isinstance(a,Iterable))    #True
print(isinstance(a,Iterator))     #Fales

print(isinstance(b,Iterable))    #Fales
print(isinstance(b,Iterator))     #Fales
别跑,点个赞再走
上一篇 下一篇

猜你喜欢

热点阅读