学习内容:

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. LeetCode 1108. Defanging an IP Address (IP 地址无效化)

    题目标签:String 题目给了我们一组 ip address,让我们把 . 变成 [.],这题可以用replace,但是这样做的话,好像没意义了.所以还是走一下array,具体看code. Java ...

  2. 3. Image Structure and Generation

    名词 Extensible Linking Format(ELF) 3.1 The structure of an ARM ELF image ARM ELF映像包含sections, regions ...

  3. 20140329 自由 youtube

    1.人生入戏,全靠演技:人生苦短,必须性感 2.youtube修改用户名 3.使用代理软件修改了IE的代理导致上不了网

  4. jenkins深入浅出

    安装: 1.  从官网上下载新版本的Jenkins,https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.89.4/jenkins.war ...

  5. 2018自己的JavaScript开发指南

    这是一个备忘清单,可以让你在不用做太多选择的情况下快速学习.我会列出一些工具来满足大部分场景下的前端开发.当你看完这篇文章,你会有足够的自信来调整你的技术栈. ☉概要 我会将地图划分为你需要解决的问题 ...

  6. iOS组件化开发-发布私有库

    远程索引库 将远程索引库添关联到本地 pod repo 查看本地已关联仓库源 pod repo add 本地索引库名称 远程索引库仓库地址 pod repo update 索引库名称 pod repo ...

  7. try install gitlab ce at docker ce

    sudo docker run --detach \ --env GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.1.30:8087/ ...

  8. Java带头节点单链表的增删合并以及是否有环

    带头节点单链表 1.优势: 1)当链表为空时,指针指向头结点,不会发生null指针异常 2)方便特殊操作(删除第一个有效节点或者插入一个节点在表头) 3)单链表加上头结点之后,无论单链表是否为空,头指 ...

  9. [JZOJ3348] 【NOI2013模拟】秘密任务

    题目 题目大意 给你一个无向图,你要割掉一些边使得\(1\)到\(n\)的所有最短路径被阻截. 割掉一个边\((u,v)\)的代价为\(a_u\)或\(a_v\)(记为两种不同的方案). 问最小代价及 ...

  10. 使用Intellij中的Spring Initializr来快速构建Spring Boot工程

    本文将介绍嵌入的Intellij中的Spring Initializr工具,它同Web提供的创建功能一样,可以帮助我们快速的构建出一个基础的Spring Boot/Cloud工程. 1.菜单栏中选择F ...