Python学习Day2笔记(字符编码和函数)
1、字符编码
#ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位
#中文编码为GBK 操作系统编码也为GBK
#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一个字符都占2个字节 16位
#英文文档改为Unicode编码大小变大一倍 为解决这种浪费空间问题
#出现了Unicode扩展集 Utf-8 为可变长的字符编码 默认英文字符按ASCII码存储 中文按照3个字节存储
编码都要先decode成unicode再转码成目标编码
#获取默认编码
import sys
print(sys.getdefaultencoding())
#文件头声明编码
#-*- coding:gbk -*-
#文件转码都要先转换成Unicode再转换成目标编码
#转换成Unicode时需要decode("自身编码") 并且传入自身编码即可以转换成unicode
#再转换成目标编码时 要encode("目标编码")
#ptyon3里 encode的时候不仅转换了编码 还变成了bits
s="你好"
#转换成gbk编码
s_gbk=s.encode("gbk")
print(s_gbk)
#gbk转换成utf-8
s_utf8=s_gbk.decode("gbk").encode("utf-8")
print(s_utf8)
#utf-8转换为gb2312
s_gb2312=s.encode("gb2312")
print(s_gb2312) #gb2312转换为gbk
s_gbk2=s_gb2312.decode("gb2312").encode("gbk")
print(s_gbk2)
#gb2312转换为utf-8
s_utf8_2=s_gb2312.decode("gb2312").encode()
print(s_utf8_2)
print(s.encode("utf-8").decode("utf-8").encode("gb2312").decode("gb2312"))
#gbk向下兼容gb2312和gb23180 2、函数 1)函数定义
#定义函数的方法
def test(x):
'''the fuction definition'''
x=1
return x def 定义函数关键字
test 函数名
() 内可定义形参
"" 文档描述(非必要,但是强烈建议为你的函数添加描述信息)
x=x+1 泛指代码块或程序处理逻辑
return 定义返回值
2)函数和过程的区别
#面向对象 --> 类--> class
#面向对象 -->过程 --> def
#函数式编程-->函数-->def
#定义函数 有返回值
def fun1():
print("in the fun1")
return 0 #定义过程 没有返回值 程序默认返回None
def fun2():
'''test1'''
print("in the fun2") x=fun1()
y=fun2() print("from func1 return is %s" % x)
print("from func2 return is %s" % y)
3) 返回值
#函数返回值 是整个函数执行的结果 可以是任意值
#数字 字符 列表 字典 方法
# 返回None
def test1():
print("test1")
#返回 0
def test2():
print("test2")
return 0 #返回 1,"123",[1,2,3],{"11":"22","33":"44"}
def test3():
print("test3")
return 1,"123",[1,2,3],{"11":"22","33":"44"}
#返回方法
def test4():
print("test4")
return test1()
4)函数参数及调用 形参:往方法里传入的参数 位置参数
实参:实际存在于内存空间的
形参与实参一一对应
def test(x,y): #x,y形参
print(x)
print(y) test(1,2) #1,2 实参数
#位置参数调用:按顺序匹配形参和实参
test(1,2)
#关键字调用: 指定形参和实参的对应关系,与形参顺序无关
test(y=1,x=2)
#Error 位置参数调用不能和关键字调用混合调用
#混合用会按照位置参数来
#test(x=2,4)
#OK 关键字参数一定要在位置参数后
test(3,y=4)
#默认参数 :定义方法的时候给形参一个默认值
#特点:调用的时候 默认参数非必传
#用途:
def test1(x,y=2):
print(x)
print(y) test1(1)
test1(2,3)
#参数组(*args) 可接收多个位置参数转换为元组
#*表示个数不固定 args为形参数名
def test(*args):
print(args) test(1,2,3)
test("111")
#输出 (1, 2, 3, 4, 5)
test(*[1,2,3,4,5])
#输出([1, 2, 3, 4, 5],)
test([1,2,3,4,5]) def test1(x,*args):
print(x)
print(args) test1(1,2,3,4,5) #接收字典 **kwargs 接收多个关键字参数转化为字典
def test3(**kwargs):
print(kwargs)
print(kwargs["name"])
print(kwargs["age"]) #输出 {'name': '111', 'age': '20'}
test3(name='111',age='20',title="it")
test3(**{"name":"22","age":"18"})
#可扩展参数方法
def test4(name,age=18,*args,**kwargs):
print(name)
print(age)
print(args)
print(kwargs)
# test4("anne",age="18",sex="m")
# test4("lily",sex="f")
#不能写test4("alex",age=20,30,40,hobby="llll")
test4("alex",20,30,40,hobby="llll")
5)局部变量与作用域
#在子程序中定义的变量为局部变量, 在程序一开始定义的变量为全局变量
#全局变量的作用域是整个程序,局部变量的作用域是定义该变量的子程序
#当全局变量与局部变量同名时
#在定义局部变量的子程序内,局部变量起作用。在其他地方全局变量起作用 #局部变量:name 只在方法change_name里生效
#change_name就是name的作用域
def change_name(name):
print("befor change %s " % name)
name="Alex"
print("after change %s " % name) name="alex"
change_name(name)
print(name) #全局变量:在文件顶级定义的变量
#全局变量:数字、字符串、元组在函数里是改不了 。其他都可以改
#如果一定要在方法里改 在用之前加上golbal 也是可以改的
school="Oldboy edu."
def test1():
global school #可以改了
school="alex"
print(school)
test1()
print(school) names=["Anne","Joe","Sue"]
def test2():
names[0]="Anne1"
print(names)
test2()
6)递归
在函数内部,可以调用其他函数。如果一个函数在内部调用自己本身,这个函数就是递归函数。 递归特性:
1.必须有一个明确的结束条件
2.每次更深入一层递归时,问题规模相比上次递归都应有所减少
3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过我,会导致栈溢出)
#递归例子
def calc(n):
print(n)
if int(n/2)>0:
return calc(int(n/2))
else:
return n calc(10) 7) 函数式编程
8)高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就能接收另一个函数作为参数,这种函数就称之为高阶函数。
#高阶函数例子
def add(a,b,f):
return f(a)+f(b)
#abs 内置函数 求绝对值
print(add(3,-6,abs))
Python学习Day2笔记(字符编码和函数)的更多相关文章
- Python 基础篇:字符编码、函数
字符编码 在python2默认编码是ASCII, python3里默认是utf-8 unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so ...
- Python学习Day2笔记(集合和文件操作)
1.集合的使用 列表是有序的可包含重复内容的 集合是无序的不可包含重复内容的 1) 集合关系测试 #列表去重list_1=[1,4,5,6,7,8,9,7,5,4,23,2] #有重复数据 list_ ...
- Python学习基础笔记(全)
换博客了,还是csdn好一些. Python学习基础笔记 1.Python学习-linux下Python3的安装 2.Python学习-数据类型.运算符.条件语句 3.Python学习-循环语句 4. ...
- python之旅:字符编码
一 了解字符编码的知识储备 一 计算机基础知识 知识储备:cpu.内存.硬盘 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在 ...
- python基础——6(字符编码,文件操作)
今日内容: 1.字符编码: 人识别的语言与机器识别的语言转化的媒介 ***** 2.字符与字节: 字符占多少字节,字符串转化 *** 3.文件操作: 操作硬盘中的一块区域:读写操作 ...
- python文件操作:字符编码与文件处理
一.字符编码 二.文件处理 一.字符编码 储备知识点: 1. 计算机系统分为三层: 应用程序 操作系统 计算机硬件 2. 运行python程序的三个步骤 1. 先启动python解释器 2. 再将py ...
- python开发基础之字符编码、文件处理和函数基础
字符编码 为什么要有字符编码? 字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 一个文件用什么编码方式存储 ...
- python编程笔记--字符编码
ASCII码.Unicode.utf-8 ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电 ...
- python学习day2
一.模块初识 python模块 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用 ...
随机推荐
- SharePoint 2013 configure and publish infopth
This article will simply descript how to configure and publish a InfoPath step by step. Note: To con ...
- 挣值管理 EVM
项目的挣值管理(Earned Value Management,EVM),是用与进度计划.成本预算和实际成本相联系的三个独立的变量,进行项目绩效测量的一种方法. 有三个比较重要的参数,用这三个参数能够 ...
- JS魔法堂:深究JS异步编程模型
前言 上周5在公司作了关于JS异步编程模型的技术分享,可能是内容太干的缘故吧,最后从大家的表情看出"这条粉肠到底在说啥?"的结果:(下面是PPT的讲义,具体的PPT和示例代码在h ...
- 以下C#程序的输出结果是( )。
以下程序的输出结果是( ). using System; namespace HoverTreeTikuConsole { class Program { static void Main(strin ...
- Devexpress GridControl.Export
private void mnuExportTable_ItemClick_1(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { u ...
- 开源跨平台IOT通讯框架ServerSuperIO,集成到NuGet程序包管理器,以及Demo使用说明
物联网涉及到各种设备.各种传感器.各种数据源.各种协议,并且很难统一,那么就要有一个结构性的框架解决这些问题.SSIO就是根据时代发展的阶段和现实实际情况的结合产物. 各种数据信息,如下图 ...
- python入门-python解释器执行
最近由于公司需要,接触了python这门神奇的语言,给我的感觉就是开发快速和代码简洁. 开始还是先罗列一下解释性语言和编译性语言的差别吧0.0! 编译性语言:是在程序运行前,需要专门的一个编译过程 ...
- C#模拟HTTP Form请求上传文件
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO ...
- 用C#从数据库动态生成AdminLTE菜单的一种方法
当前的应用设计风格趋于Flat扁平化,很多基于BootStrap实现了很多UI非常漂亮的管理界面(Bootstrap admin template). 此核心文件开源在Github:https://g ...
- JavaScript 常用代码
未知对象 对象类型名称:xobject.constructor.name 对象成员键名:Object.keys(xobject) 枚举对象成员及其值:for(var propertyName in r ...