3.python函数

3. 函数

 

一. 文件操作

 

1. 写,读,追加
f = open('test.txt','w',encoding='utf-8')  # 拿到文件句柄
f.write('张三\n李四\n')
f.close

# a追加文件
f = open('test.txt','a',encoding='utf-8')
f.write('王五')
f.close

# r读文件
f = open('test.txt','r',encoding='utf-8')
print(f.read())
f.close
2. 读写r+

追加读:

f = open("test.txt",'w',encoding="utf-8")
f.write("张三\n")
f.close

# 在写之前进行了读操作,则会在末尾加入文件,没有进行读操作就写则从开头覆盖
f = open('test.txt','r+',encoding='utf-8')
print(f.readline())          # 行读
f.write("李四\n""王五\n")
f.flush()                    # 立即写入磁盘
f.seek(0)                    # 指定光标位置
print(f.readline().strip())  # strip方法去除字符空行
f.close()
3. 文件修改

把当前文件导入新文件:

f = open('test.txt','w',encoding='utf-8')
f.write('张三\n李四\n王五\n')
f.close

### with 自动关闭文件句柄
with open('test.txt','r',encoding='utf-8') as f , open('test2.txt','w',encoding='utf-8') as f2:
    for i in f:
        if '李' in i:
            i = i.replace('李','赵')    # 字符串替换
        f2.write(i)
4. 方法
f.read() # 一次读取整个文件,文件大不适用
f.readline() # 一次只读取一行,占内存小,速度慢
f.readlines() # 一次性读取,将内容分析成一个行的列表,可以由for...in...处理
f.write(content) # 不会换行哦
f.writeline(content) # 下次会写在下一行

 

二. 字符转码

 

1. python2转码

  • decode方法是把str类型的当前编码的字符串转为unicode类型的unicdoe编码的字符串
  • encode方法是把unicode类型的unicdoe编码的字符串转为str类型的指定编码的字符串
s = "安"
print(type(s))
print(s.decode("utf-8"))     # 默认以python2默认的assci解码
print(type(s.decode("utf-8")))    # 解码成unicode编码类型
print(s.decode("utf-8").encode("gbk"))  # 编码成gbk
print(type(s.decode("utf-8").encode("gbk")))  # 是str类型

2. python3转码

  • encode方法是把str类型的unicdoe编码的字符串转为bytes类型的指定编码的字符串
  • decode方法是把bytes类型的当前编码的字符串转为str类型的unicdoe编码的字符串
s = "安" # 相当于python2中s = u"安",并且类型不再是unicode变成str
print(type(s))                # str
print(type(s.encode("utf-8").decode("utf-8")))  # str
print(type(s.encode("gbk")))  # bytes

函数传参

有返回值的面向过程

函数参数调用

#!/usr/bin/env python
#_*_coding:utf-8_*_
def test(x,y,z,s=1):           # 形参,s=1默认参数
    return x*y*z*s,x+y+z+s     # 反回值(6,6)

print(test(1,3,z=2))       # 实参,关键参数不能放在位置参数前面

非固定传参

def test(*args):     # 只能接受位置参数,转化元祖方式
    print(args)      # 结果(1, 3, 2)
test(1,3,2)
# test(*[1,3,2])


def test2(**kwargs): # 把N个关键字参数,转换为字典方式
   print(kwargs)     # 结果{'name': 'tom', 'age': 12}
test2(name='tom',age=12)

混合传参

位置传参在关键字传参前面

def test3(name,*args,age=18,**kwargs): # 非固定传参和位置参数,关键参数结合结合
   print(name)         # tom
   print(age)          # 12
   print(args)         # ('yes',)
   print(kwargs)       # {'sex': 'm'}
test3('tom','yes',sex='m',age=12)

作用域,递归

作用域

字符串和整数不能在局部里面改全局

#!/usr/bin/env python
#_*_coding:utf-8_*_
names = ["tom","luck"]
def change_name():
    names[0] = "汤姆"
change_name()
print(names)          # ['汤姆', 'luck'] 

递归

最大递归999层
特性:

  • 必须有一个明确的结束条件
  • 每次进入更深一层递归时,问题规模相比上一次递归都应有所减少
  • 递归效率不高,递归层次过多容易导致栈溢出
def calc(n):
    print(n)
    if n/2 >1:
        return calc(n/2)  # 一直递归到n小于1 
calc(10)  

高阶函数

一个函数接收另一个函数作为参数:

def add(a,b,f):
        return f(a)+f(b)
print(add(3,-6,abs))      # abs内置函数,取绝对值
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容