本节目录:

1、字符编码
2、函数
  2.1参数
  2.2变量
  2.3返回值
  2.4递归
  2.5 编程范式
  2.6 高阶函数

************************************************************

1、字符编码 
py2 指定编码时,文件和变量为指定的编码;默认为ASICC
py3 默认文件为utf-8,变量为unicode 只有unicode有encode方法
先说python2

py2里默认编码是ascii
文件开头那个编码声明是告诉解释这个代码的程序 以什么编码格式 把这段代码读入到内存,因为到了内存里,这段代码其实是以bytes二进制格式存的,不过即使是2进制流,也可以按不同的编码格式转成2进制流。
如果在文件头声明了#_*_coding:utf-8*_,就可以写中文了, 不声明的话,python在处理这段代码时按ascii,显然会出错, 加了这个声明后,里面的代码就全是utf-8格式了
在有#_*_coding:utf-8*_的情况下,你在声明变量如果写成name=u"你好",那这个字符就是unicode格式,不加这个u,那你声明的字符串就是utf-8格式
utf-8 to gbk怎么转,utf8先decode成unicode,再encode成gbk

py3里默认文件编码就是utf-8,所以可以直接写中文,也不需要文件头声明编码了,干的漂亮
你声明的变量默认是unicode编码,不是utf-8, 因为默认即是unicode了(不像在py2里,你想直接声明成unicode还得在变量前加个u), 此时你想转成gbk的话,直接your_str.encode("gbk")即可以
但py3里,你在your_str.encode("gbk")时,感觉好像还加了一个动作,就是就是encode的数据变成了bytes里,因为在py3里,str and bytes做了明确的区分,你可以理解为bytes就是2进制流,你会说,我看到的不是010101这样的2进制呀, 那是因为python为了让你能对数据进行操作而在内存级别又帮你做了一层封装,否则让你直接看到一堆2进制。  
py2里的bytes只是对str做了个别名,没有像py3一样给你显示的多出来一层封装,但其实其内部还是封装了的。 无论是2还是3, 从硬盘到内存,数据格式都是 010101二进制到-->b'\xe4\xbd\xa0\xe5\xa5\xbd' bytes类型-->按照指定编码转成你能看懂的文字
编码应用比较多的场景应该是爬虫了,互联网上很多网站用的编码格式很杂,虽然整体趋向都变成utf-8,但现在还是很杂,所以爬网页时就需要你进行各种编码的转换。

2、函数

2.1参数 
#位置参数name,age 默认参数country
#默认参数必须在位置参数之后
#非固定参数*args,**kwargs
#关键字参数name='zs'
#关键字参数必须放在后面,并且关键字参数和非固定参数不能混合使用
#关键字参数和位置参数不能混合使用
def sayhi(name,age,country='US',*args,**kwargs):
#位置参数name,age 默认参数country
#默认参数必须在位置参数之后
#非固定参数*args,**kwargs
print("HELLO, T am %s" % name,age,country)
print("待定:",args,kwargs)
def main():
#name = input("name>>:")
sayhi('zs',22,'CN','0001',SEX='F')
#位置参数'zs'22、关键字参数name='zs'
#关键字参数必须放在后面,并且关键字参数和非固定参数不能混合使用
# print(sayhi)
if __name__ == '__main__':
main()

2.2变量
>>不建议使用
global +参数名 将局部变量转换成全局变量 

全局与局部变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

2.3返回值
作用:
1、函数经过调用并开始执行,则函数外部的程序无法左右函数的执行,外部程序必须等待函数的执行结果; 外部程序要根据函数的结果来判断下一步如何执行,函数执行结果以return形式返回给外部的程序
2、return代表一个函数的结束,
3、return可以返回任何值
4、对于用户角度,函数可以返回任意数量的值,对于Python本身来讲,只能返回一个值(一个元组)

2.4递归
递归特性:

1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
堆栈扫盲http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html

#二分法
def fen(dataset,find_num):
if len(dataset) > 0:
mid_pos = int(len(dataset)/2)
if dataset[mid_pos] == find_num:
print("find num",dataset[mid_pos])
if dataset[mid_pos] > find_num:
print("num left side",dataset[:mid_pos])
fen(dataset[:mid_pos],find_num)
if dataset[mid_pos] < find_num:
print("num right side",dataset[mid_pos+1:])
fen(dataset[mid_pos+1:],find_num)
else:
print("not find",find_num)
date = [1,2,3,4,5,6,7,8,9,10,11,11]
fen(date,1)
输出:
F:\Python\Python3\python.exe D:/python培训/our_python/day4/test.py
num left side [1, 2, 3, 4, 5, 6]
num left side [1, 2, 3]
num left side [1]
find num 1

map(clac,range(10))
map将后面列表中的每个值,传个clac函数运算

2.5 编程范式 
面向过程:解决具体的问题-使用函数较多
面向对象:
函数式编程:Erlang,Haskell
函数式编程中的函数这个术语不是指计算机中的函数(实际上是Subroutine),而是指数学中的函数,即自变量的映射。也就是说一个函数的值仅决定于函数参数的值,不依赖其他状态

2.6 高阶函数 
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数

vars()=globals()把当前程序所有在内存中的全局数据以字典的形式打印出来;
locals()把当前程序所有在内存中的局部数据以字典的形式打印出来;

Python基础篇-day4的更多相关文章

  1. python基础篇-day1

    python基础篇 python是由C语言写的: pass 占位符: del,python中全局的功能,删除内存中的数据: 变量赋值的方法: user,pass = 'freddy','freddy1 ...

  2. python基础篇之进阶

    python基础篇之进阶 参考博客:http://www.cnblogs.com/wupeiqi/articles/5115190.html python种类 1. cpython  使用c解释器生产 ...

  3. python基础篇(六)

    PYTHON基础篇(六) 正则模块re A:正则表达式和re模块案例 B:re模块的内置方法 时间模块time A:时间模块的三种表示方式 B:时间模块的相互转换 随机数模块random A:随机数模 ...

  4. python基础篇(五)

    PYTHON基础篇(五) 算法初识 什么是算法 二分查找算法 ♣一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大 ...

  5. python基础篇(一)

    PYTHON基础篇(一) 变量 赋值 输入,输出和导入 A:输入 B:输出 C:导入 运算符 A:算数运算符 B:比较运算符 C:赋值运算符 D:位运算符 E:逻辑运算符 F:成员运算符 G:身份运算 ...

  6. python基础篇(二)

    PYTHON基础篇(二) if:else,缩进 A:if的基础格式和缩进 B:循环判断 C:range()函数和len()函数 D:break,contiue和pass语句 for,while循环 函 ...

  7. python基础篇(三)

    PYTHON基础篇(三) 装饰器 A:初识装饰器 B:装饰器的原则 C:装饰器语法糖 D:装饰带参数函数的装饰器 E:装饰器的固定模式 装饰器的进阶 A:装饰器的wraps方法 B:带参数的装饰器 C ...

  8. python基础篇(四)

    PYTHON基础篇(四) 内置函数 A:基础数据相关(38) B:作用域相关(2) C:迭代器,生成器相关(3) D:反射相关(4) E:面向对象相关(9) F:其他(12) 匿名函数 A:匿名函数基 ...

  9. Python基础篇--输入与输出

    站长资讯平台:Python基础篇--输入与输出在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和输出输出输入END在任何语言中,输入和输出都是代码最基础的开始,so,先来聊一聊输入和 ...

随机推荐

  1. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题十二 HDU 1176 免费馅饼

    题意: 中文题意不解释…… 思路: 先把x,T存到矩阵里 然后像数塔一样从最底层走一边就行了 dp[i][j]代表在时间为j时 第i个位置最多能吃到多少个馅饼 最后输出第0时刻的5位置的馅饼数量就好了 ...

  2. unity3d和php后台简单交互--一

    unity3d开发时,用PHP作为后台是个不错的选择.对一些数据吞吐量不是很大的游戏,比如某个游戏的排名,登录等等,一般的php程序能够胜任了,并且php语言简单,开发容易对数据库尤其是mysql的支 ...

  3. WinForm ListView

    今天,我学习了公共控件中的ListView的内容. 首先,在利用ListView布置界面时,有以下三个方面: 1.视图:            在其右上方小箭头点击将视图改为Details:或者右键属 ...

  4. Flash cc 添加目标Flash Player

    原文出处:http://zengrong.net/post/1568.htm 第一步 首先下载最新的 playerglobal.swc(基于Flash Player11): http://www.ad ...

  5. SQL in优化将In转化为联合查询

    in查询有时候会非常影响性能,最好能转化为联合查询,但有的网友说sqlserver会自动将in转化为联合查询,但我实际遇到的有时候却不是这样.所以最好还是不要用in. 我自己的例子,用in的时候耗费了 ...

  6. svn添加新文件自动忽略

    背景:做项目,用的客户端TortoiseSVN1.8,发现新建的文件,不是问号(?),而是自动忽略的减号,提交的时候也确实没有,说明不是符号混乱,确实是被忽略了,网上找了解决方案记录如下: 查看svn ...

  7. ios7 实现应用内保真截屏

    CGSize size = self.content.bounds.size; UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen m ...

  8. Linux文件系统简介及常用命令

    在linux系统中一切皆是文件,下面简要总结了一下linux文件系统中分区类型.文件系统类型以及常用命令. 一.分区类型1.主分区:最多只能有四个2.扩展分区:只能有一个,也可以看做是主分区的一种.即 ...

  9. log4j.properties全配置 (转)

    ###############################log4j.properties############################### ##### Global Log Leve ...

  10. iOS上传图片详解

    iphone中图像通常存储在4个地方[相册.应用程序包.沙盒.Internet],通过这4个源,我们就可以存取应用图片. 相册 iphone的相册包含摄像头胶卷+用户计算机同步的部分照片.用户可以通过 ...