Skip to content

Commit 178378b

Browse files
authored
Create kc41.md
1 parent c290344 commit 178378b

File tree

1 file changed

+146
-0
lines changed

1 file changed

+146
-0
lines changed

kc/kc41.md

+146
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
# 4-1 python函数定义 基础用法
2+
函数,咱们可以理解成一个具有魔法功能的黑盒子,里面具体放的是什么东西?咱们不用去管它,只用明白,怎么样去用这个盒子,和用这个盒子能做什么就可以了
3+
4+
函数: 函数是一个组织好的代码段,可以在其它地方重复使用
5+
6+
- **封装 使用者,只需要了解调用的名称,及传参、返回值即可实现对应的功能,比如咱们代码中常用的print函数**
7+
- **复用 相同功能的代码,只用写一次,其它地方只需要调用即可,最大程度上降低无用代码的产生,方便后期功能优化的批量修改**
8+
9+
主要作用:
10+
11+
1.减少重复代码
12+
13+
2.方便修改,更易于扩展(加减功能)
14+
15+
3.保持代码一致性(就一段代码,一改,所有调用这个函数的都改了)
16+
## 1.怎么样定义一个函数
17+
python提供了简单的方法,让你可以自定义一个自己的函数,函数的定义,有以下规则:
18+
19+
- 以def做为定义函数的开头关键字,函数名后要用()结束
20+
- 所有需要传递的参数,必须放在()括号中间
21+
- 函数名不能以数字开头
22+
- return 当函数需要有返回值时或者想中间退出时,用retrn返回标识
23+
- 函数名不能用系统关键字
24+
- 函数的调用,以函数名()括号
25+
```python
26+
# 函数的定义
27+
28+
def 函数名(): # 函数名前带def关键字定义函数,后面要跟冒号 :
29+
语句1 # 空格缩进,是属于函数体内部的语句
30+
语句2 # 空格缩进,函数体内部的语句
31+
语句3 # 不需要结束符,只要缩进都是函数体内的语句
32+
return 变量 # 最终函数的返回值,就是结果是什么?
33+
```
34+
## 2.函数的作用域
35+
- 外部不能访问函数内部变量
36+
- 函数内部不能修改外部变量 ( 强行修改需要加 global 外部变量 = 新值 )
37+
- 函数内部和函数外部变量名可以相同,但需要注意访问优先级
38+
### 定义一个不带参数没有返回值的函数
39+
### 代码区 1
40+
```python
41+
1 def hello():
42+
2 print('我是一个函数')
43+
3 print('我有两行代码')
44+
4
45+
5 hello()
46+
6
47+
```
48+
![4](https://user-images.githubusercontent.com/103555341/163546933-bee710b5-943e-454e-b00d-922d2b897614.jpg)
49+
```python
50+
我是一个函数
51+
我有两行代码
52+
```
53+
### 函数的调用
54+
### 代码区 2
55+
```python
56+
1 # 函数: 带参数的函数
57+
2
58+
3 def calc(x): #定义一个函数,含有参数x
59+
4 return x*2-1 #对x进行了一些运算,并返回最后结果
60+
5
61+
6 print(calc(3)) # x=3 时,3*2-1=5
62+
7 print(calc(10)) # x=10时,10*2-1=19
63+
8
64+
```
65+
![4](https://user-images.githubusercontent.com/103555341/163546933-bee710b5-943e-454e-b00d-922d2b897614.jpg)
66+
```python
67+
5
68+
19
69+
```
70+
### 函数传递参数
71+
python的参数的传参类型有
72+
- 必备参数 即必须按照函数定义时的参数顺序进行依次传递
73+
- 关键字参数 可以通过指定参数名,对参数进行赋值(个人比较喜欢这一种,这样可以不用考 虑参数的先后顺序,另外能清晰的知道每个参数具体传的什么值)
74+
- 默认参数 当有参数的某个值,不需要必传时,可以定义默认值
75+
### 代码区 3
76+
```python
77+
1 # 定义一个带参数的函数,用来计算 x 与 y的差
78+
2 def calc(x, y=0): #默认y=0,也就是说如果你不传y参数,默认值就是0
79+
3 return x - y #函数返回值 x-y
80+
4
81+
5 print(calc(5, 3)) #x,y都传了,返回5-3=2
82+
6 print(calc(5)) #只传了x, 返回5-0=5
83+
7
84+
```
85+
![4](https://user-images.githubusercontent.com/103555341/163546933-bee710b5-943e-454e-b00d-922d2b897614.jpg)
86+
```python
87+
2
88+
5
89+
```
90+
### 代码区 4
91+
```python
92+
1 # 函数功能演示: 奇数生成器
93+
2 import random #导入系统内置random模块
94+
3
95+
4 def jnum(n=100): # 定义一个函数-奇数生成器,默认参数 n=100
96+
5 while True: # 不断死循环,只到生成的是奇数为止
97+
6 x=random.randint(1,n) # 从 1~100 随机生成一个数 这是random的功能
98+
7 if x%2==1: return x # 如果x不能被2整除,说明是奇数,退出整个函数,同时也退出while循环了
99+
8
100+
9 for i in range(5):
101+
10 print('100内奇数',jnum()) # 循环5次,生成100以内的5个奇数 (n=函数默认值)
102+
11
103+
12 print('10以内的奇数',jnum(10)) # 正常调用jsum(N=10),生成10以内的奇数
104+
13
105+
14 #大家可以多点几次运行,每次的结果都不一样
106+
15
107+
```
108+
![4](https://user-images.githubusercontent.com/103555341/163546933-bee710b5-943e-454e-b00d-922d2b897614.jpg)
109+
```python
110+
100内奇数 77
111+
100内奇数 35
112+
100内奇数 23
113+
100内奇数 79
114+
100内奇数 1
115+
10以内的奇数 7
116+
```
117+
### 代码区 4
118+
```python
119+
1 # 函数功能演示: π的计算
120+
2 def PI(n=20):
121+
3 p=0 # π的计算很麻烦,所以我们定义一个函数,把复杂的运算方法包装好了
122+
4 for k in range(n): # n是运算后π精度,n=20的精度就足够用了
123+
5 p += 1/pow(16, k) * (4 / (8 * k + 1) - 2 /(8 * k + 4) - 1/(8 * k + 5) - 1 /(8 * k + 6))
124+
6 return p
125+
7
126+
8 print(PI()) # 这样,当需要计算π的时候,不管细节,只管调用这个 PI()函数即可
127+
9
128+
```
129+
![4](https://user-images.githubusercontent.com/103555341/163546933-bee710b5-943e-454e-b00d-922d2b897614.jpg)
130+
```python
131+
3.141592653589793
132+
```
133+
### 代码区 5
134+
```python
135+
1 # 练习题 定义一个带默认值参数的函数,计算两个数的乘积
136+
2
137+
```
138+
![4](https://user-images.githubusercontent.com/103555341/163546933-bee710b5-943e-454e-b00d-922d2b897614.jpg)
139+
140+
141+
142+
143+
144+
145+
146+

0 commit comments

Comments
 (0)