学习内容:

1. 文件编码

2. 文件

3. 集合

4.函数

5.递归

6.匿名函数

1. 文件编码:

常见的字符串编码有:ASCII 扩展的ASCII Unicode GBK GB2312 GB18030 UTF-8

ASCII:   用于表示英文,使用1个字节,一共可以表示128个字符。

扩展的ASCII: 用于表示更多的欧洲文字,一共可以表示256个字符。

GBK/GB2312/GB18030: 表示汉字。GBK/GB2312表示简体中文,GB18030表示繁体中文。

Unicode: 包含世界上所有的字符,是一个字符集。

UTF-8: 是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度。

字等符间的转换方法:

所有字符需要先解码为Unicode编码,再编码为其它编码方式。

python 2的转码方式:

# -*- coding: GBK -*-
# GBK 转 UTF-8
msg = "我是谁!" print(msg.decode(encoding='GBK').encode(encoding='utf-8'))

python 3的转码方式:

python 3默认支持Unicode和GBK。

msg = "中国"   # unicode

print(msg.encode(encoding="gbk"))

2. 文件:

文件 info_new.txt

line 1

line 2

line 3

line 4

读取文件所有行:

file = open("info_new.txt")

for line in file.readlines():
print(line.strip()) file.close() 输出:
line 1
line 2
line 3
line 4

覆盖写:

file = open("info_new.txt","r+")

file.write("line 1")
for line in file.readlines():
print(line.strip())
file.close()

输出:
line 1

追加写:


file = open("info_new.txt","a")

file.write("line end")

file.close()

file = open("info_new.txt")

for line in file.readlines():
print(line.strip()) file.close() 输出:
line 1
line 2
line 3
line 4 line end

打开文件,移动n个字符

file = open("info_new.txt")
file.seek(7) # 移动7个字符
file.tell() # 获取当前位置: 7
for line in file.readlines():
print(line.strip()) 输出:
line 2
line 3
line 4 line end

截取当前位置到文件结尾的N个字符

file = open("info_new.txt","r+")
file.truncate(7)
for line in file.readlines():
print(line.strip()) 输出:
line 1

读取从文件开始的N个字符

file = open("info_new.txt")
print(file.readline(4)) 输出:
line

3. 集合

a = {1,3,5,7,9}
b = {2,4,7,9} print(a.intersection(b))       # 交集,a与b都有
print(a.difference(b))       # 差集,
print(a.union(b))       # 并集,a 加 b
print(a.symmetric_difference(b))   # 交集的差集 输出:
{9, 7}
{1, 3, 5}
{1, 2, 3, 4, 5, 7, 9}
{1, 2, 3, 4, 5}

4. 函数

函数定义、调用、形参、实参:

# 函数定义,形参为str1
def hello(str1):
print(str1)

# 函数调用,实参:"hi" "hello world!"
hello("hi")
hello("hello world!")

函数返回值:

def ret():
names = ["wills","tom","jerry"]
return names def print2(lName):
print(lName) print2(ret()) 输出:
['wills', 'tom', 'jerry']

默认参数:

def info(id,name,sex,age=30,dept="DEV"):
msg = '''
id = %s
name = %s
sex = %s
age = %s
dept = %s
''' %(id,name,sex,age,dept)
print(msg) info("","wills","male","","HR")
info("","tom","female","")
info("","jerry","male") 输出:
id = 1
name = wills
sex = male
age = 29
dept = HR
    
id = 2
name = tom
sex = female
age = 49
dept = DEV
    
id = 3
name = jerry
sex = male
age = 30
dept = DEV

位置参数和关键参数:

正常情况下,给函数传递参数需要按顺序,如果不想按顺序,可以用关键参数(指定参数名即可)

def info(id,name,sex,dept="DEV",age=30):
msg = '''
id = %s
name = %s
sex = %s
age = %s
dept = %s
''' %(id,name,sex,age,dept)
print(msg) info("","tom","female",age=20) 输出:
id = 2
name = tom
sex = female
age = 20
dept = DEV

可变参数(*args):(可以传递多个参数,不固定个数)

使用*args,传递参数时,可以用多个参数,args是一个元组。

def info(id,name,*args):
print("id:" + id)
print("name:" + name)
print(args) info("","wills","闷骚","奔放","渣渣","单身狗") 输出:
id:1
name:wills
('闷骚', '奔放', '渣渣', '单身狗')

使用**kwargs(传递字典参数)

def info(id,name,*args,**kwargs):
print("id:" + id)
print("name:" + name)
print(args,kwargs) info("","wills","闷骚","奔放","渣渣","单身狗",userid="") 输出:
id:1
name:wills
('闷骚', '奔放', '渣渣', '单身狗') {'userid': ''}

5. 递归

递归:在函数内部,可以调用其它函数,如果一个函数在内部调用自身,这个函数就是递归函数。

使用递归函数求1到100的所有整数之和:

def calc(n):
if n > 1:
return n + calc(n-1)
else:
return n sum = calc(100)
print(sum) 输出:
5050

6. 匿名函数

# 普通函数写法
def calc(n):
res = n ** 2
return res print(calc(100)) # 匿名函数写法
calc2 = lambda n:n**2
print(calc2(10)) 输出:
10000
100

day3-编码、文件、集合、函数、递归的更多相关文章

  1. python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数

    目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...

  2. 跟着ALEX 学python day3集合 文件操作 函数和函数式编程 内置函数

    声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/  一. 集合 集合是一个无序的,不重复的数据组合,主要作用如下 1.去重 把一个列表变成集合 ,就自动去重 ...

  3. Day3 - Python基础3 函数、递归、内置函数

    Python之路,Day3 - Python基础3   本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...

  4. Python基础:Python函数、文件操作、递归

    函数参数 函数参数包括位置参数,关键字参数,动态参数(*args, **args)三种. 传参的过程是形式参数的赋值. *args传入的参数是元组形式,**args传入的参数是字典形式. 示例代码如下 ...

  5. java 打印流 递归复制子文件子文件夹 不同编码文件复制到同一文件中 序列化流反序列化流

    package com.swift.jinjie; import java.io.BufferedInputStream; import java.io.File; import java.io.Fi ...

  6. python基础-基础知识(包括:函数递归等知识)

    老男孩 Python 基础知识练习(三) 1.列举布尔值为 False 的值空,None,0, False, ", [], {}, () 2.写函数:根据范围获取其中 3 和 7 整除的所有 ...

  7. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  8. Delphi文件操作函数

    文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道.文件的本质是一个数据流,所有的文件实际上是一串二进制序列.文件管理包括:1.文件操作.2.目录操作.3.驱动器操作.三部分. 1.常见文 ...

  9. c语言函数, 函数调用及函数递归

    1. 函数的定义: 返回值类型 函数名(形参列表) {函数体(函数的实现内容)}, 注意: 如果没有参数, 小括号也是必不可少的.  函数与函数之间可以嵌套调用(也就是在一个函数内部可以调用另外一个函 ...

  10. Python编码/文件读取/多线程

    Python编码/文件读取/多线程 个人笔记~~记录才有成长   编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...

随机推荐

  1. 7、postman的变量

    环境变量 环境变量顾名思义,我们可以设置测试环境和生产环境的变量. 比如我们设置测试环境的某个变量值为A,但是生产环境的为B,这个时候就可以用到环境变量.当然我们也可以不用环境变量,直接手动改,不过试 ...

  2. 312. 戳气球【困难】【区间DP】

    题目链接 有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中. 现在要求你戳破所有的气球.每当你戳破一个气球 i 时,你可以获得 nums[left] * ...

  3. 21-4indexOf

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Read-Write lock 看可以,不过看的时候不能写

    当线程“读取”实例的状态时,实例的状态不会改变,只有线程对实例“写入”操作时才会改变.read-write lock 模式将读取和写入分开来处理,在读取数据前获取读锁定,而写入之前,必须获取写锁定. ...

  5. Django ORM 之 单表、多表查询

    返回ORM目录 Django ORM Django ORM 之一 内容目录: 一.单表查询 二.多表查询 0.准备工作 一些说明: - 表myapp_person的名称是自动生成的,如果你要自定义表名 ...

  6. IDEA 打开Run Dashboard 分组启动

    一,项目文件夹中,找到 .idea-->workspace.xml 添加: <component name="RunDashboard"> <option ...

  7. redis通过命令传参以及主从复制

    config set appendonly  yes  临时生效 如果想永久生效的话,执行 config rewrite 并不是所有的都支持修改 config set bind ip  修改bind参 ...

  8. The linux command之高级键盘技巧

    一.光标移动 二.修改文本 三.剪切和粘贴文本 四.使用历史命令

  9. postman连接不了localhost问题解决

    学习搭建服务器可用postman 连接不了localhost的端口 网上好多教程是这样连接 看完视频后我们是这样 找了大量资料都解决不了,什么版本,什么证书的都不好使,最简单的就是去掉http:// ...

  10. if else 和 swith效率比较

    读大话设计模式,开头的毛病代码用if else实现了计算器,说计算机做了三次无用功,优化后是用switch,那么switch为什么比if else效率高呢, 百度找了几个说是底层算法不一样,找了一个比 ...