day9 初识函数

1复习

 

#序列
'''在python中,序列类型包括字符串(普通字符串和unicode字符串)、列表和元组,
所谓序列,即成员有序排列,并且可以通过下边偏移量访问到它的一个或者几个成员。
'''

#今日内容
'''数据库 存储数据和信息用的 本质上和文件没有区别 增删改查更方便了
流程控制:条件判断和各种循环
为什么要有文件处理:内存---->硬盘
'''
#文件操作复习
#文件处理
    #打开文件
        #open('路径','打开方式 mode=','指定编码方式 encoding=')
        #打开方式:r w a r+ w+ a+ rb r+b等
            #r+ 读写 注意先读后写 不然会覆盖
        #编码方式:utf-8
    #操作文件
        #
            #read 一次性读
            #readline 一行一行读
                #不知道在哪儿结束 视频图片等必须按照字节读不能一行一行读
            #readlines一次性读按行切分放列表
            #for循环读文件最好:从头到尾内存只有一行文件内容
        #
            #write  \n可以换行(打印的还是换行符会换行不会打印出“\n” 添加的时候会把‘\n’添加进去
        #光标:文件指针
            #seek 按字节指定光标移到到某个位置
            #tell 获取光标当前的位置
            #truncate 按字符截取文件 返回字符数
        #关闭文件
            #close()
#修改文件
    #open调用系统文件 windows系统默认gbk编码 如果不指定编码方式 因为python是utf-8会乱码
# with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8')as f2:
#     for line in f:
#         if "星儿" in line:
#             line=line.replace('星儿','阿娇')
#         #写文件
#         f2.write(line)
# import os
# os.remove('小护士班主任')#删除文件
# os.rename('小护士班主任.bak','小护士班主任')#重命名文件
# s='alex'
# s='_'.join(s)
# print(s)

 

2初识函数

s='jjjjjj'
def my_len(): #定义/声明一个函数
    i=0
    for k in s:
        i+=1
    print(i)
length=my_len() #调用函数 带括号
print(length)
#定义了之后 可以在任何需要它的地方调用 没有返回长度 只是单纯打印

<<<
6
None
#return返回值的三种情况
    #没有返回值:返回None
        #不写return  只写return:return结束一个函数的继续 return None 相当于return
    #返回一个值
        #可以返回任何数据类型 只要返回就可以接收到  如果在一个程序中多个return,那么只执行第一个return
    #返回多个值
        #用一个或多个变量接收 得到一个元祖

def func():
    l=['qq','ww']
    for i in l:
        print(i)
        if i=='qq':
            return
    print('*'*6)
print(func())

def func():
    return {'f':1}
print(func())

def func2():
    return 1,2,3 #相当于(1,2,3),所以可以一个或3个变量接收 元祖列表字典都能解包
a,b,c=func2()
print(a)

def my_len(s):
    i=0
    for k in s :
        i+=1
    return i
a=my_len('hhhhh')
b=my_len([1,2,3,4,5,6])
print(a,b)

def f2(l1):
    f1(l1)
    for i in l1:
        print(i,end='')
def f1(l1):
    for i in l1:
        print(i,end='')
f2([1,2,3,4,5])

def my_sum(a,b):
    # print(a,b)
    res=a+b
    return res
ret=my_sum(1,2)
print(ret)

<<<
qq
None
{'f': 1}
1
5 6
12345123453

传参

 

#站在实参的角度上:按照位置传参 关键字传参 混着用的时候必须先位置传参然后关键字传参

#站在形参的角度上:位置参数:必须传 有几个参数传几个值 默认参数:不传就用默认的 传了就用传的

def classmates(name,gender=''):
    print('%s:%s'%(name,gender))
classmates(111,'')

<<<
111:女

 

动态参数以及形参顺序

 

#动态参数:*args 接收所有位置参数 组织成一个元祖 **kwargs 接收所有关键字传参的值 组织成一个字典
#形参的顺序:位置参数 *args 默认参数 **kwargs
def sum(*args):
    i=0
    for k in args:
        i+=1
    return i
print(sum(1,2,3,6))

def func(**kwargs):
    print(kwargs)
    return kwargs
print(func(a1_=1,b=2,c=3))

def func(*args,default=1,**kwargs):
    print(args,default,kwargs)
func(1,2,a=3,b=4)

<<<
4
{'a1_': 1, 'b': 2, 'c': 3}
{'a1_': 1, 'b': 2, 'c': 3}
(1, 2) 1 {'a': 3, 'b': 4}

 

 

动态参数的另一种传参方式

#动态参数的另一种传参方式
def func(*args):#站在形参角度上,给一个变量加上*,就是组合所有传来的值
    print(args)
func(1,2,3)
l=(1,2,3,4,4)
func(l)
func(*l) #站在实参角度上,给一个序列加上*,就是将这个序列按顺序打散
d={'a':1,'b':2}
func(*d)


def func(**kwargs):
    print(kwargs)
func(a=1,b=2)
d={'a':1,'b':2}
func(**d)

<<<
(1, 2, 3)
((1, 2, 3, 4, 4),)
(1, 2, 3, 4, 4)
('a', 'b')
{'a': 1, 'b': 2}
{'a': 1, 'b': 2}

函数的注释

 

#函数的注释
# def func():
'''
    这个函数实现了什么功能
    参数1:
    参数2:
    return: 字符串或者。。。
    '''
    # pass
'''
文件的修改
函数
函数的定义
函数的调用
函数的返回值
函数的参数
形参:位置参数:必须传实参
      *args:可以接收任意多个位置参数
      默认参数:可以不传
      **kwargs:可以接受任意多个关键字参数
实参:按照位置传参 按照关键字传参

函数 :内置函数  自定义函数'''

 

li=['alex','wusir','rain']
print('*'.join(li))
print('s s ssss'.split(' *'))
<<<
alex*wusir*rain
['s s ssss']
#1-2+3...+99
sum=0
for i in range(1,100):
    if i%2==1:
        sum+=i
    else:
        sum-=i
print(sum)

for i in range(10,-1,-1):
    print(i,end='')

<<<
50
109876543210
#实现一个整数加法计算器 dic={'最终计算结果':结果}
content=input('请输入内容:')
content_list=content.split('+')
print(content_list)
sum=0
for i in content_list:
    sum+=int(i) #int默认去空格
print(sum)
<<<
请输入内容:2 +99
['2 ', '99']
101
#将大于66得数保存到字典的第一个key中 小于66的保存到第二个key中
li=[11,22,33,44,55,77,88,90]
result={}
for i in li:
    if i>66:
        if 'key1'not in result:
            result['key1']=[]
        result['key1'].append(i)
    else:
        if 'key2'not in result:
            result={'key2':[]}
        result['key2'].append(i)
print(result)


li=[11,22,33,44,55,77,88,90]
result={}
for row in li:
    result.setdefault('key1',[])
    result.setdefault('key2',[])
    if row >66:
        result['key1'].append(row)
    else:
        result['key2'].append(row)
print(result)
<<<
{'key2': [11, 22, 33, 44, 55], 'key1': [77, 88, 90]}
{'key1': [77, 88, 90], 'key2': [11, 22, 33, 44, 55]}
user_list=[{'username':'barry','password':1234},
{'username':'alex','password':'asdf'}]
board=['zs','lxs','wemz']
while 1:
    username=input('<<<')
    if username.upper()=='Q':break
    password=input('<<<')
    for i in board:
        if i in username:
            username=username.replace(i,'*'*len(i))
user_list.append({'username':username,'password':password})
print({'username':username,'password':password})
print(user_list)
<<<hahaha
<<<111
<<<q
{'username': 'q', 'password': '111'}
[{'username': 'barry', 'password': 1234}, {'username': 'alex', 'password': 'asdf'}, {'username': 'q', 'password': '111'}]

 

posted on 2018-12-12 17:37  白的N次方  阅读(161)  评论(0编辑  收藏  举报

导航