Python 基础学习(五)-----迭代与函数

一. 迭代

1. 迭代协议

  1. next()
f=open('data.txt',encoding='utf-8')
f.__next__()
'学编程 好心情'

2.迭代工具 for…推导…map

  1. 迭代器对象
    (1)已经实现
  2. 可迭代对象
    (1)iter() ->iter()用于生成迭代器
f=open('data.txt',encoding='utf-8')
iter(f) is f
True
next(f)
'youpin\n'
urls=['youpinketang.com','uke.cc','codeclassroom.com']
iter(urls) is urls
False
i=iter(urls)
i.__next__()
'youpinketang.com'

有些自己能迭代,有些不能
推导表达式

l=[1,2,3,4,5]
res1=[x for x in l]
type(res1)
<class 'list'>
res1
[1, 2, 3, 4, 5]
res2=[x+10 for x in l]
res2
[11, 12, 13, 14, 15]
urls
['youpinketang.com', 'uke.cc', 'codeclassroom.com']
res3=[url.upper() for url in urls]
res3
['YOUPINKETANG.COM', 'UKE.CC', 'CODECLASSROOM.COM']
res4=[url for url in urls if url.endswith('.com')]
res4
['youpinketang.com', 'codeclassroom.com']
  1. 内置可迭代对象
    (1)range()
result=[x**2 for x in range(1,6)]
result
[1, 4, 9, 16, 25]
r=range(1,6)
iter(r) is r
False
i=iter(r)
i.__next__()
1

(2) map()

def double_number(x):
    return x * 2

 l=[1,2,3,4,5]
result=list(map(double_number,l))

print(result)

(3) zip()

result=zip(['x','y','z'],[1,2,3])
result
<zip object at 0x10a4b02c8>
for x in result:
...    print(x)
...    
('x', 1)
('y', 2)
('z', 3)

二. 函数

#定义函数
def read_book():
    print('got book')
    print('read book')
    print('put book')

#调用函数
read_book()

1. 为什么要用

  1. 最大化代码重用
  2. 最小化代码余下
  3. 过程分解

2. 定义

  1. define 方法名(参数,…): 函数体
def learning(name,course,start,end):
    print('{}get:{}'.format(name,course))
    print('learn from {} to {}'.format(start,end))
    print('{} quit'.format(name))

learning('Tom','Python',1,3)

3. 调用

  1. 函数名(实际参数)
def add_number(x,y):
    result = x + y
    return result

a=10
result = a + add_number(5,3)
print(result)
def intersect(seq1,seq2):
    res = []
    for x in seq1:
        if x in seq2:
            res.append(x)
    return res

s1='abcdefg'
s2='youpinketang.com'
print(intersect(s1,s2))

4. 变量作用域

  1. Local (4)
  2. Global (2)
x = 55

def func():
    x = 99
    print(x)

print('total x:',x)
print('x in function:')
func()

把全局改成99

x = 55

def func():
    global x
    x = 99
    print(x)

print('total x:',x)
print('x in function:')
func()
print('total x:',x)
  1. Built-in (1)
    覆盖原来的函数名
def len():
    print('selfdefine')

len()
  1. Enclousure (3)
def func():
    x = 100
    def nested(): 
        nonlocal x
        x = 99
        print(x)
    nested()
    print(x)

func()

5. 参数

  1. 传递
    (1)不可变类型,传递副本给函数,函数内部操作不影响原始值
def change_int(x):
    x += 10

x = 5
print(x)
chang_int(x)
print(x)

(2)可变类型,传递地址引用,函数内操作可能会影响原始值

def change_list(l):
    l[0] = 99

l = ['uke.cc','codeclassroom.com','youpinketang.com']
print('origional list:',l)
change_list(l)
print('final list:',l)
发布了11 篇原创文章 · 获赞 0 · 访问量 185

猜你喜欢

转载自blog.csdn.net/mangogogo321/article/details/104112269
今日推荐