Python-函数

  1 #!/usr/bin/env python    
  2 # -*- coding: utf-8 -*-
  3 print("----函数学习----")
  4 """
  5 函数:将一段具有独立功能的代码块整合到一个整体并命名。在需要的位置调用名称即可完成对应的需求。函数可不带参数
  6 定义函数:
  7         def 函数名(参数):
  8             代码1
  9             代码2
 10             ...
 11 调用函数(必须先定义后使用):   
 12         函数名(参数)
 13 """
 14 print('函数的体验:')
 15 
 16 
 17 def sel_fun():  # 注意:函数必须先定义后调用
 18     print('Hello jun', '测试函数')
 19 
 20 
 21 sel_fun()  # 调用函数。注意:函数只定义,不会执行函数体内的代码
 22 
 23 
 24 # 带参函数的用法
 25 def add_num1(num1, num2):  # num1和num2叫做形参
 26     result = num1 + num2
 27     print(result)
 28 
 29 
 30 add_num1(10, 20)  # 10和20叫做实参
 31 
 32 
 33 # 函数返回值的作用
 34 def sum_num2(a, b):
 35     return a + b
 36     print('ok')
 37 
 38 
 39 num = sum_num2(10, 30)  # 注意:并未打印OK。说明:遇到return退出当前函数
 40 print(num)
 41 
 42 # 函数的说明文档
 43 help(len)  # help函数(函数名):查看函数的说明文档
 44 
 45 
 46 def hell(a, b):
 47     """
 48     这是函数的说明文档
 49     :param a: 参数1
 50     :param b: 参数2
 51     :return: 返回值
 52     """  # 这是hell()函数的说明文档"""
 53     print('代码模块。。。')
 54     return a + b
 55 
 56 
 57 help(hell)  # 查看函数的说明文档
 58 
 59 
 60 # 函数的嵌套调用
 61 def testa():
 62     print("这是函数testa")
 63 
 64 
 65 def testb():
 66     testa()
 67     print("这是函数testb")
 68 
 69 
 70 testb()
 71 
 72 print('函数的高阶知识')
 73 
 74 
 75 # 变量的作用域:(局部变量)变量的定义在函数体的内部,只在函数体内部生效
 76 def run():
 77     testA = 'hello'  # 定义局部变量
 78     print(testA)
 79 
 80 
 81 run()  # print(testA)不能訪問
 82 # 变量的作用域:(全局变量)函数体内和外都能访问这个变量
 83 testB = 'hell'  # 定义全局变量
 84 
 85 
 86 def run1():
 87     print(testB)
 88 
 89 
 90 print(run1())
 91 
 92 # 修改全局变量 global 变量名
 93 i = 100
 94 
 95 
 96 def testA1():
 97     print(i)
 98 
 99 
100 def testB1():
101     i = 200
102     print(i)
103 
104 
105 def testC1():
106     global i  # 声明A是全局变量
107     i = 300  # 修改全局变量
108 
109 
110 testA1()
111 testB1()
112 print(i)
113 testC1()
114 print(i)
115 
116 
117 # 函数的返回值
118 def return_num():
119     return 1, 2
120     return 2  # 不会返回这个,程序遇见return后下方代码不再执行
121 
122 
123 result = return_num()
124 print(result)
125 
126 
127 # 关键字参数,用键=值得形式加以指定
128 def t1(name, age, gender):
129     print(f'你的名字是{name},年龄是{age},性别是{gender}')
130 
131 
132 t1('刘三', 26, '')  # 正常传参,参数顺序一致
133 t1('刘三', '', 26)  # 打印异常,年龄就成女,性别就是26
134 t1('刘四', gender='', age=18)
135 
136 
137 # 缺省参数,默认参数。提供默认值。注意:所有参数必须出现在默认参数前
138 def t2(name, age, gender='', ipaddr='127.0.0.1'):
139     print(f'姓名是{name},年龄是{age},性别是{gender},地址是{ipaddr}')
140 
141 
142 t2('', 18, '')
143 
144 
145 # 不定长参数,也叫可变参数。不确定调用时传递多少个参数
146 def t3(*args):
147     print(args)
148 
149 
150 t3('Tom')
151 t3('Tom', 18)  # 传进的参数都会被args收集,根据位置合并为一个元组(tuple)
152 
153 
154 def t4(**kwargs):  # 包裹关键字的传递
155     print(kwargs)
156 
157 
158 t4(name='TOM', age=18, id=110)  # 传进的参数组成一个字典
159 
160 
161 # 拆包,组包
162 def t5():
163     return 100, 200  # f返回的是元组
164 
165 
166 num1, num2 = t5()
167 print(num1, num2)
168 
169 dict1 = {'name': 'Tom1', 'age': 18}
170 a, b = dict1  # 字典的拆包
171 print(a)  # 打印key:name
172 print(b)  # 打印key:age
173 print(dict1[a], dict1[b])
174 
175 # 引用,在Python中值是靠引用来传递的
176 a = 1
177 b = a
178 print(id(a))  # 用id方法判断变量的地址(在内存中的十进制地址)
179 print(id(b))

运行结果:

----函数学习----
函数的体验:
Hello jun 测试函数
30
40
Help on built-in function len in module builtins:

len(obj, /)
    Return the number of items in a container.

Help on function hell in module __main__:

hell(a, b)
    这是函数的说明文档
    :param a: 参数1
    :param b: 参数2
    :return: 返回值

这是函数testa
这是函数testb
函数的高阶知识
hello
hell
None
100
200
100
300
(1, 2)
你的名字是刘三,年龄是26,性别是女
你的名字是刘三,年龄是女,性别是26
你的名字是刘四,年龄是18,性别是女
姓名是王,年龄是18,性别是女,地址是127.0.0.1
('Tom',)
('Tom', 18)
{'name': 'TOM', 'age': 18, 'id': 110}
100 200
name
age
Tom1 18
140733706953360
140733706953360

 

posted @ 2020-06-07 08:48  君,子觞  阅读(134)  评论(0)    收藏  举报