一、习题收藏

 5、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数,并返回结果。
# def func4(s):
#     dic = {#         'num':0,'alpha':0,'space':0,'others':0
#     }
#     for i in s:
#         if i.isdigit():
#             dic['num'] += 1
#         elif i.isalpha():
#             dic['alpha'] +=1
#         elif i.isspace():
#             dic['space'] += 1
#         else:
#             dic['others'] += 1
#     return dic
# s = 'asdjk2330  sdjkfh#$^&'
# ret = func4(s)
# print(ret)
# 6、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。
# def func5(s_l_t):
#     if s_l_t:
#         for i in s_l_t:
#             if not i and i != 0 and i != False:
#                 return True
#     else:
#         return True# 7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
#     dic = {"k1": "v1v1", "k2": [11,22,33,44]}
#     PS:字典中的value只能是字符串或列表
# def func6(dic):
#     for k in dic:
#         value = dic[k]
#         if len(value) > 2:
#             dic[k] = value[:2]
#     return dic
# def func6(dic):
#     for k in dic:
#         dic[k] = dic[k][:2]
#     return dic
# dic = {"k1": "v1v1", "k2": [11,22,33,44]}
# print(func6(dic))
# 8、写函数,接收两个数字参数,返回比较大的那个数字。
# a = 1
# b = 2
# def func7(a,b):
#     if a > b:
#         return a
#     else:
#         return b
# print(func7(1,1))
#
# #三元运算符
# c = 0
# if a>b:
#     c = a
# else:
#     c = b#新知识:重要程度五颗星*****
# c = a if a>b else b  # 三元运算符 三元运算表达式

初始函数的作业题

def fun(a,b):c = a if a>b else b  # 三元运算符 三元运算表达式return c
print(fun(1,2)) #2

二、动态参数

#动态参数
#*args :接收所有按照位置传的参数,接收到的是参数组成的元祖

#*args  :接收所有按照位置传的参数,接收到的是参数组成的元祖
def func1(*args):print(args)
func1('name',18,'e')  # args = ('name', 18, 'e')
# 注:名字不一定是args 这是使用习惯,方便代码阅读
# 注:如果调用args时候前边加了一个* 便是将其迭代的形式变为形参  字符串前加*会变成单个元素
#注 :*args 在位置参数之后。关键字参数的前边
def func1(*args):print(*args)
func1(*('name',18,'e'))  #name 18 e
#传入的参数也可以用*打散

def my_sum(*args): #求合
# print(args)
# # sum_2 = 0
# # for i in args:
# # sum_2 += i
# # return sum_2
# l = [1,24,5,7]

可以求和

#**kwargs :接收所有按照关键字传的参数,接收到的是参数组成的字典

#**kwargs   :接收所有按照关键字传的参数,接收到的是参数组成的字典
def func1(**kwargs):print(kwargs)
func1(**{'abc':2,'bcd':3}) #{'a': 2, 'b': 3}   如果用*号得到的是key的参数
#所有的参数的顺序:位置参数,*args,默认参数,**kwargs
#keywords must str
#顺序:
#在调用函数的时候,可以打散:*l(按顺序打散)、**dic(打散)

#所有的参数的顺序:位置参数,*args,默认参数,**kwargs

二 、命名空间

#namespace 命名空间,名称空间
#局部命名空间:每一个函数都拥有自己的命名空间
#全局命名空间:写在函数外面的变量名
#内置命名空间:python解释器启动之后就可以使用的名字
#python的解释器要运行起来
#加载顺序:# 先所有内置命名空间的中的名字-->然后按照顺序加载全局命名空间中的名字#局部命名空间中的名字:在调用函数的时候产生,并且随着调用的结束而消失

如下代码的加载顺序:

# func(1,2,3,4,5)# def f1():                        1#     a = 1                         3#     def f2():                      4#         def f3():                 6#             a = 3                 8#             print(a)              9#         f3()                      7#     f2()                            5 # f1()                             2

三、函数的嵌套

嵌套内部的函数不能直接被外部调用,只能由他的上一层函数调用,或者自身将函数名返回到外层

#函数的嵌套定义
# def func():
#     def qqxing():
#         print('我是qqxing')
#     qqxing()
# func()# print(len('123'))
# def len(x):
#     print('***%s***'%x)
#
# len('123')#函数的嵌套定义
# n = 0
# def func1():
#     def func2():
#         print(n)
#     func2()
#
# func1()#fun2()   会报错

四、作用域

#作用域:一个名字可以使用的区域
#全局作用域:内置名字空间和全局名字空间中的名字都属于全局作用域
#局部作用域:局部名字空间中的名字属于局部作用域
#局部作用域可以使用全局作用域中的变量
#而全局作用域不能使用局部作用域中的变量
#局部作用域中还可以嵌套更小的局部作用域
#作用域链:小范围作用域可以使用大范围的变量,但作用域链是单向的,不能反向应用

# func1()
# def func():
#     a = 10
#     b = 20
#     print(locals())  #保存了当前作用域中变量
#     print(globals())# n = 10
# m = 22
# print(globals())   #保存了在全局作用域中的名字和值
# func()#globals()   #保存了在全局作用域中的名字和值
#locals() #中的内容会根据执行的位置来决定作用域中的内容
#如果在全局执行
#globals和locals打印的结果是一致的

如果局部作用域中的想修改全部变量,那么用globals  如果局部内层函数想修改外层函数那么用nonlocals

n = 1
def func2():n = 2def func3():nonlocal n  # 使用nonlocak前,本层函数不能出现该变量n+=1#print(n)#global n   # 使用nonlocak前,所有层函数不能出现该变量n += 10func3()print(n)
func2()
print(n)

五、第一类对象(函数名)

#第一类对象的概念:#函数名可以赋值#可以作为一个数据结构的元素#可以作为一个函数的参数#可以作为一个函数的返回值
def func():print('in func')return 10def func2(arg):arg()return argf = func2(func)
f()    #可以作为参数传递

def f1():pass
def f2():pass
def f3():dic = {'alex':f1,'tai':f2}name = input('请输入账户名:')if name in dic:dic[name]()
f3()

转载于:https://www.cnblogs.com/zjchao/p/7773234.html

day11函数的进阶动态参数,命名空间,作用域,第一类对象相关推荐

  1. 函数的动态参数和作用域

    1. 动态参数 位置参数的动态参数: *args * 在这里表示接收位置参数的动态传参,接收到的是元祖def chi(*food): # 可以传入任意的位置参数 food是参数名,*便是动态参数 pr ...

  2. python中自定义函数如何传递动态参数_python 函数的动态参数

    1. 函数的动态参数 1. *args 位置参数动态传参 2. **kwargs 关键字参数动态传参 顺序:位置参数, *args, 默认值, **kwargs def func(*args, **k ...

  3. javascript 红宝书笔记之函数、变量、参数、作用域

    ECMAScript 不介意传进来多少个参数,也不介意传进来的参数类型. 理解参数: 命名的参数只提供便利,不是必需的. ECMAScript 的变量包含两种不同的数据类型的值.分别是 简单的数据构成 ...

  4. mysql函数输出参数_函数--返回值、参数和作用域

    一.函数的返回值--return的作用 1.return将return后面的值作为函数的输出返回值,当函数被调用时,返回值可以被其他变量接收.使用. 而print只是打印在控制台,一个函数如果没有re ...

  5. iframe的src怎么携带参数_三种传递gRPC动态参数方式的使用体验

    gRPC是一个远程调用框架,使用Protobuf做为信息的载体来完成客户端和服务端的数据传输.关于怎么定义Protobuf消息.搭建gRPC服务在之前的系列文章中都有提及,今天来说一下在使用gRPC和 ...

  6. 三种传递gRPC动态参数方式的使用体验

    gRPC是一个远程调用框架,使用Protobuf做为信息的载体来完成客户端和服务端的数据传输.关于怎么定义Protobuf消息.搭建gRPC服务在之前的系列文章中都有提及,今天来说一下在使用gRPC和 ...

  7. 动态参数 名称空间 作用域 作用域链 加载顺序 函数的嵌套 global nonlocal 等的用法总结...

    03,动态参数 *args,**kwargs # 用户传入到函数中的实参数量不定时,或者是为了以后拓展,# 此时要用到动态参数*args,**kwargs(万能参数.)# *args接收的是所有的位置 ...

  8. 轩小陌的Python笔记-day11 函数进阶

    day11 函数进阶 目标:掌握函数相关易错点 & 项目开发必备技能. 今日概要: 参数的补充 函数名到底是什么? 返回值和print,傻傻分不清楚. 函数的作用域 1.参数的补充 在函数基础 ...

  9. 函数参数---动态参数

    形参的第三种:动态参数 动态参数分为两种: 1.动态接受位置参数; 注意:形参的顺序:   位置参数, 动态参数, 默认参数 动态接受参数的时候要注意:动态参数必须在位置参数后面 关键参数必须要放在位 ...

最新文章

  1. Science论文解读:打牌一时爽,一直打牌一直爽
  2. leetcode 190. Reverse Bits | 190. 颠倒二进制位(移位操作,十进制二进制相互转换,打表法)
  3. [渝粤教育] 西南科技大学 电子设计EDA 在线考试复习资料
  4. POJ1061 青蛙的约会(线性同余方程)
  5. 单肩包属于什么类目_Lazada时尚类目成为优势类目?
  6. 甲骨文将关闭Sun开源软件项目托管网站
  7. HTTP基础(图解HTTP笔记)幕布
  8. android开发,assets下面的资源文件不会变化/改动
  9. [组图]手机病毒组合拳一箭双雕 手机PC均中招(转)
  10. codeBook背景建模
  11. 【WhatsApp营销】如何设置欢迎消息?WhatsAppBusiness问候语示例
  12. java openxml_Excel单元格中的OpenXml和Date格式
  13. 搭建java环境和java学习
  14. pytorch历史版本下载_Pytorch、Anaconda安装、Navidia版本更新
  15. 根据日期、时间和当地经纬度计算太阳天顶角和方位角的原理
  16. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  17. 【论文翻译】Playing Atari with Deep Reinforcement Learning
  18. 2018.6.14 华为南研所面试经验
  19. mysql扣减库存_扣库存之mysql方案讨论
  20. 输入数字输出中文大写python_阿拉伯数字转换成中文大写,中文货币的表达方式 python...

热门文章

  1. Logistic逻辑回归用初等数学解读逻辑回归
  2. 计算机前置usb应用,电脑前置usb和后置usb的区别
  3. 大厂HR:“不会数据分析,你还想干运营?”
  4. 你给我这么多报表,让我如何是好
  5. 利用Seaborn库进行简单的画图
  6. TransE算法解析
  7. php array walk 效率,php代码优化系列(二) -- array_walk 和 foreach, for 的效率的比较...
  8. python中pandas有误_python-pandas to_sql方法给出日期列错误
  9. 判断utf8无bom_[Java] 判断UTF8 无BOM编码
  10. Vivado设计流程(五)工程实现