今日内容

  函数小高级

  lambda表达式

  内置函数

内容回顾

  1.函数基本结构

  2.参数

    形参

      基本参数:def func(a1,a2):pass

      默认值:def func(a1,a2=123):pass 注意:默认值如果是不可变类型,随便玩。可变类型:有坑

      无敌:*args,**kwargs

    实参:

      位置参数

      关键字参数

   3.返回值

      默认返回值:None

      特殊情况:返回的元组

      def func():

          return 1,2,32,4

   4.作用域

      全局与局部

      自己有找自己,自己没有找父级;

      子作用域用于只能读取或修改父级的值,不能重新赋值;

      NUM = [1,2,3]

      def func():

        global NUM

        NUM  =123

      func()

   5.函数嵌套 

    def func():
          name = 'oldboy'
          def inner():
                print(name)
          name = 'alex'
          inner()
          print(name)
    func()  #输出结果为:alex alex

内容详情

  1.函数小高价 

a = 123
name = "alex"
nums = [11,22,33,44]
data = nums
def func():
pass
#func = 函数

  2.函数名当作变量来使用    

def func():
print(1,3,3)
v1 = func func()
v1()#两个实现过的功能一样,都是调用该函数
#示例二
def func():
print(123) func_list = [func, func, func] #
func_list[0]()
func_list[1]()
func_list[2]()
for item in func_list:
v = item()
print(v) #请注意该处打印值为None
#示例三 函数还可以作为字典中的元素
def func():
print(123)
def bar():
print(666)
info = {'k1':func,'k2':bar}
info['k1']() #输出结果为:123
info['k2']() #输出结果为:666
#示例四 混淆你
def func():
return 123
fun_list1 = [func,func,func]
fun_list2 = [func(),func(),func()]
print(fun_list1) #请注意该处返回的func函数的地址
#[<function func at 0x000001C7B62CE0D0>, <function func at 0x000001C7B62CE0D0>, <function func at 0x000001C7B62CE0D0>] print(fun_list2)
#输出结果为:[123,123,1223]
info= {
'k1':func,
'k2':func()
}
print(info) #输出结果为:{'k1': <function func at 0x0000020CA36DE0D0>,'k2':123}

  3. 函数可以当作参数进行传递 

def func(arg):
print(arg)
func(1) #输出结果为:1
func([1,2,3,4]) #输出结果为:[1,2,3,4] def show():
return 999
func(show) #输出结果为:show函数的内存地址 <function show at 0x00000234D2B2E8B0> #示例二
def func(arg):
v1 = arg()
print(v1) def show():
print(666)
func(show) #输出结果为:666 None #示例三
def func(arg):
v1 = arg()
print(v1) def show():
print(666)
result = func(show)
print(result) #输出结果为:666 None None #面试题
def func():
print("花费查询") def bar():
print("语音服务") def base():
print("xxx") def show():
print('xxxx') def test():
print('xxxxx') info = {
'f1':func,
'f2':bar,
'f3':base,
'f4':show,
'f5':test
}
choice = input("请输入你要选择的功能:")
function_name = info.get(choice)
if function_name:
function_name()
else:
print("输入错误")

  4.lambda表达式:用于简单的函数

#lambda表达式
if 1 == 1:
a = 123
else:
a = 245 # #三元运算表达
a = 123 if 1==1 else 245 #请注意lambda表达式,为了解决简单的情况:如
def func(a1,a2):
return a1+100
func = lambda a1,a2 :a1+100 func1 = lambda: 100
func2 = lambda x1:x1*10
func3 = lambda *args,**kwargs: len(args)+len(kwargs) DATA = 100
func4 = lambda a1:a1+DATA
v = func4(1)
print(v) #输出结果为:101 DATA =100
def func():
DATA = 1000
func4 = lambda a1:a1+DATA
v = func4(1)
print(v)
func() #输出结果为:1001 func5 = lambda n1,n2 :n1 if n1>n2 else n2
v = func5(1111,2)
print(v) #输出结果为:111 #练习题1
USER_LIST= []
def func0(x):
v = USER_LIST.append(x)
return v
result = func0('alex')
print(result) #输出结果为:None #练习题2
def func0(x):
v = x.strip()
return v
result = func0(' alex ')
print(result) #输出结果为:alex #注意:总结:列表所有方法基本上都是返回None;字符串的所有方法基本上都是返回新值 #练习3
USER_LIST = []
func1 = lambda x :USER_LIST.append(x)
v = func1("alex")
print(v)
print(USER_LIST)
#输出结果为:None ['alex'] #练习题4
func1 = lambda x : x.split("l")
v1 = func1("alex")
print(v1) #输出结果为:['a','ex'] #练习题5
func_list = [lambda x:x.strip(),lambda y:y+199,lambda x,y:x+y]
# v1 = func_list[0]("alex")
# print(v1) #输出结果为:alex
#
# v2 = func_list[1](100)
# print(v2) #输出结果为:299
#
# v3 = func_list[2](1,2)
# print(v3) #输出结果为:3

  5.内置函数

    1.自定义函数

    2.内置函数

      其他:len/open /range/id/type/

      输入输出:input/print

      强制转换:int()/str()/bool()/list()/tuple()/dict()/set()

      数学相关:abs()绝对值/float()转换为浮点类型小数/max()找到最大值/min()找到最小值/sum()求和/divmod() 两数相除得到的商与余数

divmod()函数示例:

#divmod 两数相除得到的商与余数
# a,b = divmod(1001,5)
# print(a,b)
# #输出结果为 200 1 #练习题 请通过分页对数据进行展示
"""
要求:
每页显示10条数据 
让用户输入要查看的页面:页 第1页:USER_LIST[0:10]->0123456789
第2页:USER_LIST[10:20]
第3页:USER_LIST[20:30]
""" USER_LIST = []
for i in range(0,836):
temp = {'name':'我有%s个苹果'%i,'mail':'123%s@qq.com'%i}
USER_LIST.append(temp)
print(USER_LIST) #数据总条数
total_count = len(USER_LIST)
#每页显示的条数
per_page_count = 10
#总页码数
max_page_num,a = divmod(total_count,per_page_count)
if a > 0:
max_page_num += 1
else:
max_page_num = max_page_num while True:
pager = int(input("请输入你要查看的页数:"))
if pager < 1 or pager >max_page_num :
print("页码不合法,必须是1—%s" % max_page_num)
break
else:
start= (pager-1)*per_page_count
end = pager*per_page_count
content = USER_LIST[start:end]
for i in content :
print(i)

      强制转换:

强制转换示例:  

bin 将十进制转换为二进制:
num=13
v1=bin(num)
print(v1) oct 将十进制转换为八进制:
num=13
v1=oct(num)
print(v1) hex 将十进制转换为十六进制:
num = 13
v1 =hex(num)
print(v1) int 是将其他进制转换为十进制
#将二进制转换为十进制
v1='0b1101'
result= int(v1,base = 2)
print(v1) #将八进制转换为十进制
v1='0o1101'
result= int(v1,base = 8)
print(v1) #将十六进制转换为十进制
v1='0x1101'
result= int(v1,base = 16)
print(v1) 

面试题1:

#1.请将ip="192.168.12.79"中的每个十进制数转换成二进制并通过,连接起来生成一个新的字符串。
  

ip ="192.168.12.79"
v = []
data_list = ip.split(".")
for i in data_list:
i = int(i)
number_bin= bin(i)
v.append(number_bin)
new_string= ','.join(v)
print(new_string)

面试题2

#2.请将ip="192.168.12.79"中的每个十进制数转换成二进制:
ip = '192.168.12.79'
ip_list = ip.split(".")
data = []
for item in ip_list:
bin_num = bin(int(item))
print(bin_num[2:])
if len(bin_num[2:]) == 8:
data.append(bin_num[2:])
else:
new_bin = str(bin_num[2:]).rjust(8,'0')
data.append(new_bin)
data_join= '0b'+"".join(data)
print(data_join)
print(int(data_join,base = 2))

今日总结   

  函数当作是一个变量:参数传值 / 当元素嵌套到字典列表中。5*
  lambda 表达式3*
  内置函数3*

 

												

20200118--python学习第十一天的更多相关文章

  1. python 学习笔记十一 SQLALchemy ORM(进阶篇)

    SqlAlchemy ORM SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据A ...

  2. python学习第十一天 -- 函数式编程

    在介绍函数式编程之前,先介绍几个概念性的东西. 什么是函数式编程? 函数式编程的特点: 1.把计算视为函数而非指令; 2.纯函数式编程:不需要变量,没有副作用,测试简单; 3.支持高阶函数,代码简洁. ...

  3. Python 学习 第十一篇:numpy

    numpy是Python中的基础模块,类型ndarray定义了一个具有矢量算术运算的多维数组,无需编写循环,就能对整个数组进行批量运算.通常情况下,导入numpy,设置别名为np. import nu ...

  4. Python学习(十一) —— 模块和包

    一.模块 一个模块就是一个包含了python定义和声名的文件,文件名就是模块名加上.py后缀. import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编译为共 ...

  5. Python学习笔记十一:模块

    标准库(内置模块) time与datetime 模块 时间表示方式 1.时间戳 2.格式化的字符串 3.元组形式 时间戳就是一个秒数 x=time.time(),从1970年1月1日0时0分0秒到现在 ...

  6. Python学习札记(十一) Function2 函数定义

    参考:定义函数 Note: 先看一段代码实例(Barefoot topo.py): def read_topo(): nb_hosts = 0 nb_switches = 0 links = [] w ...

  7. python学习 (三十一) python中的class

    1 python的类:   Python类都继承自object. __init__: 构造函数,如果不写,有一个默认的. __init__: 这个构造函数只能有一个,Python中不能有多个构造函数. ...

  8. python学习(十一) 文件和流

    11.1 打开文件 >>> f = open(r'c:\text\somefile.txt'),  第一个参数是文件名,必须有:第二个是模式:第三个参数是缓冲. 11.1.1 文件模 ...

  9. python学习笔记十一:操作mysql

    一.安装MySQL-python # yum install -y MySQL-python 二.打开数据库连接 #!/usr/bin/python import MySQLdb conn = MyS ...

  10. python学习(十一)函数、作用域、参数

    定义和调用函数 在这里函数的定义和调用和一般的语句没什么不一样,感觉函数也是对象 #!/usr/bin/python def times(x, y):                # 定义函数    ...

随机推荐

  1. 悄摸直播(三)—— 搭建rtmp服务器(smart_rtmpd - rtmp服务器搭建)

    悄摸直播 -- javaCV实现本机摄像头画面远程直播 搭建rtmp服务器 一.素材 rtmp服务器:smart_rtmpd ffmpeg工具:ffmpeg.exe 二.搭建 1.下载smart_rt ...

  2. 《【面试突击】— Redis篇》-- Redis哨兵原理及持久化机制

    能坚持别人不能坚持的,才能拥有别人未曾拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>-- Redis哨兵原理及持久化机制 在这个系列里, ...

  3. kmp-最小子串回文次数

    poj 2406 Given two strings a and b we define a*b to be their concatenation. For example, if a = &quo ...

  4. Alibaba Nacos 服务发现组件集群部署

    前面学习了单机模式下的启动,生产环境中部署nacos肯定是使用集群模式cluster保证高可用. 官方文档的集群部署推荐使用VIP+域名模式,把所有服务列表放到一个vip下面,然后挂到一个域名下面. ...

  5. Kafka Topic 体系结构 - 复制 故障转移 并行处理

    本文介绍了 Kafka Topic 的体系结构,并讨论了如何使用分区进行故障转移和并行处理. 1. Kafka Topic, Log, Partition Kafka Topic(主题) 是一个有名字 ...

  6. 「 从0到1学习微服务SpringCloud 」11 补充篇 RabbitMq实现延迟消费和延迟重试

    Mq的使用中,延迟队列是很多业务都需要用到的,最近我也是刚在项目中用到,就在跟大家讲讲吧. 何为延迟队列? 延迟队列就是进入该队列的消息会被延迟消费的队列.而一般的队列,消息一旦入队了之后就会被消费者 ...

  7. 3、python第三方库的安装方式

    在学习Python过程中,经常要用到很多第三方库,面对各种不同情况,Python为我们提供了多种安装方法,这里主要介绍三种 方法:pycharm在线安装.pip在线安装(强烈推荐).离线安装. 方式一 ...

  8. 客户端 jQuery 跨端口 调用 node 服务端

    一句话 很顶用 response.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1:8020'); 说 响应的头文件里设置 一个 h ...

  9. 对于kvm配置ssh

    首先我们要让自己的机器开启ssh服务 首先更新源 sudo apt-get update 安装ssh服务 sudo apt-get install openssh-server 检测是否已启动 ps ...

  10. openpyxl库实现对excel文档进行编辑(追加写入)

    首先,这个库只支持xlsx格式的excel文件 预期,对”excel_test.xlsx“的A1单元格写入”hello word“ 1.安装”openpyxl“库,pip install openpy ...