函数详解
Posted artisticmonk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数详解相关的知识,希望对你有一定的参考价值。
##函数 #简单的函数获取身份证日期: # def Id(ID): # ‘‘‘ # :param ID: ID为函数的参数 # :return: 是返回值,返回了运算结果(如果不加入return语句,他默认的返回结果是None,就是说它执行的是return None # 返回时是以元组的方式返回 # :def Id(ID,NAME):如果我们只是定义了一个参数而不使用默认值(NAME=FALSE),就算我们运行的时候没有使用该参数来进行运算,程序也会报错 # ‘‘‘ # ido = ID[6:14] # print(ido) # return ido # Id("440882199508125471")
# 练习: # # # 根据输入的手机号码返回运营商名称。 mobile = [134,135 ,136,137,138,139,147,150,151,152,157,158,159,178,182,183,184,187,188] unicom = [130,131,132,145,155,156,171,175,176,185,186] telecom = [133,149,153,173,177,180,181,189,199] def runo(): Input = input("请输入电话号码>>:") ‘‘‘ :如果需要对字符串处理的话,就先不要转为整数 :在函数内(也就是局部变量)可以取到全局变量,但不能更改全局变量 ‘‘‘ Inp = int(Input[:3]) if Inp in mobile: return "中国移动" elif Inp in unicom: return "中国联通" elif Inp in telecom: return "中国电信" else: return "号码错误!!" print(runo())
def ClassName(list_name,*Name,**NAME): ‘‘‘ :param list_name: 列表名称 :param args: 多个值以元组的形式传入 :param **NAME 多个值以字典的形式传入 :return: :if Name:判断Name不能为空 :因为星号“*”可以解析可迭代序列。“**”也可以类似使用 ‘‘‘ if Name: for i in Name: list_name.append(i) return list_name list_name = [] CN = ClassName(list_name,"溜溜","王五","李四","张三","name":"Cairo","age":18) print(CN) # 例如,我们通过一组用户信息,返回一个用户描述的字符串。 # 代码如下: def User(name,age,height,sex = "男"):#定义函数并设定参数 info = ‘姓名-%s 年龄-%s 身高-%s‘%(name,age,height) return info user_info = {‘name‘:‘Cairo‘,‘age‘:‘20‘,‘height‘:"120"} print(User(**user_info))
# 单星号“*”可以解析可迭代序列的作用不仅限在参数处理中。 # 举个小例子,让两个元组混合为集合。 # 代码: # s1 = {(1, 2, 3), (3, 4, 5)} # s2 = {*(1, 2, 3), *(3, 4, 5)} # print(s1) # print(s2)
# 练习 # 从一组数据中的数字类型抽取出全部偶数 def Number_two(*nunber2): ‘‘‘ :param nunber2: 传入一组元组数字 :return: 返回值 :if not Number_t % 2:判断条件,偶数取余为假时(0为假),not是非值,非假即真 :for 遍历循环取到外面传进来的值: ‘‘‘ create_list = [] for Number_t in nunber2: if not Number_t % 2: create_list.append(Number_t) return create_list create_lis = (1,2,5,6,8,44,55,6,99,58,78) j_list = Number_two(*create_lis) print(j_list)
# # 示例 x = 0 #全局变量 def out(): ‘‘‘ :return: 可以返回内嵌函数(也就称为闭包)。 返回内嵌函数时,如果函数名称后面没有加上‘()‘,调用外层函数时不会立即执行返回函数,需要在调用外层函数后,添加()来执行 :总结return x,inside:这里是return x 是给外部函数返回第一个值,return inside 是执行外部函数以后,返回的第二个值来调用内部函数 :也就是我给我当前这个函数返回一个值并且调用内部函数,但内部函数并不会立即执行,需要在调用这个函数的后面加上()才会执行 :作用域:这一示例中的三个变量x,并不是同一个变量,只是名称一样,三个的作用域都是不一样的 ‘‘‘ x = 1 #局部变量 相对来说是以外面的x = 0 这个x来说是局部变量。如果对 inside函数里面的x来说是外部变量,也是相当于全局变量了 def inside(): ‘‘‘ :return: :global:如果需要修改全局变量,就只需要在这里声明一个 global x ,就这样就可以改变了,这里就不多说了,很少用到 ‘‘‘ x = 2 #局部变量 return x return x,inside k,l = out() print(x) print(k) print(l())##l()执行内部函数
# 闭包(+自己的理解,也应该有偏差) #什么是闭包? ##:看了专业解释:闭包(closure)就是引用了自由变量的函数(外部变量)。这个被引用的自由变量将和这个函数一同存在 #简单的来说就是根据不同传入的配置信息得到的不同的结果 # 示例 # def external(addr): # ‘‘‘ # :return: # ‘‘‘ # # addr = 100 ##外部变量:局部变量,也就是自由变量 # def inside(addr_in): ##外层函数中包含的内部函数,称为这个函数—_-! # # addr_in = 200 # # return addr + addr_in # #也可以在外面传值 # return addr + addr_in # return inside # ext = external(100) # sx = external(200) # print(ext(300)) # print(sx(300)) # 再来一个闭包的例子 # 用户输入还钱金额 # def User_money(): # ‘‘‘ # :return:闭包总结:在一个外层函数调用内嵌函数,把值传递进去给内嵌的函数使用(也就像上面说的一同存在差不多一个意思),然后执行内嵌函数 # ‘‘‘ # User_Input = int(input("请输入还钱的金额>>:"))###外层函数中变量User_Input和内嵌函数money_z # money = 1000000 # while True: # if User_Input < money: # User_Input += int(input("你需要还的钱不够,请加点>>:")) # else: # break # def money_z(): # print("你要还的金额只要 %d 元, 已给你退回 %d 元回你的钱包!!"%(money,User_Input-money)) # return money_z # # x = User_money() # print(x())
以上是关于函数详解的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段