函数是一系列表达式的组合,他拥有它的函数名。当我们定义一个函数时我们需要给他指定函数名和函数体内的表达书系列。这一章节中我将学习到“调用函数”、“定义函数”的方法。

一、 调用函数(Function calls)

  1. 函数类型: type
  2. 参数(argument):参数了望函数体内传入的数值或者变量。
  3. 返回值(result\ return):函数完成的表达式序列最后返回的值。 ```python type(32)

    int

  1. <a name="4nVcn"></a>
  2. # 二、 自建函数(Built-in Functions)
  3. 1. python语言提供了丰富的自建函数,我们调用这些函数时不需要重新定义函数。
  4. 1. Python的创建者给我们提供了解决常规问题的函数。
  5. ```python
  6. max('Hello World')
  7. # min
  8. len ('hello world')
  1. 我们应该将这些内置函数当作python保留字符,避免用在定义变量等。

    三、随机数(Ramdom numbers)

  2. 确定的值(Determinism):

  3. 随机数
    1. 伪随机数(Pseudorandom numbers):伪随机数不是真正意义上的随机数,它们是通过确定的计算方式算出的随机数,看起来像随机数。
      import random 
      for i in range(10):
        x= random.random()
        print(x)
      
      ```python

      从2到5之内随机的一个整数 randint()

      random.randint(2,5)

从列表中随机选择一个元素 choice()

list_num = [1,2,4,56,7] random.choice(list_num)

<a name="dwIMV"></a>
# 三、Math Functions

1. Python中提供了math模块,它给我们提供了大多数经典数学运算方法。 
1. 在使用math模块之前我们需要先导入它。 import math
```python
import math
  1. 我们要使用模块中的数学函数时需要知道函数名,通过math + “.” + 函数名的方式使用。 ```python ratio = signal_power / noise_power decibels = 10 * math.log10(ratio)

redians = 0.7 height = math.sin(radians)

<a name="zRTVW"></a>
# 四、 定义新的函数(Adding a new function)

1. 目前为止我们只是学会了如何运用自带函数或者其他模块给我提供的函数,但是程序设计过程中我们还需要自己创建自己的函数-- 这就是定义新函数。
1. 我们定义了自己的函数之后,我们在之后的程序中可以无限次调用我们创建的函数。Once we define a function, we can reuse the function over and over throughout our program.
<a name="MFEF0"></a>
## 定义函数规则:

1. key word : def 
1. name of function : 
1. () 函数名称后面括号: 如果空括号表示,该函数不需要传入参数,否则需要传入参数才能正常调用。
1. 函数体(body of function):该函数的目标语句序列
```python
# 定义一个新的函数,此函数名称为print_lyrics
def print_lyrics():
    print("I'm a lumberjack, and I'm okay.")
    print('I sleep all night and I work all day.')

#要使用该函数时跟使用内置函数一样

print_lyrics()
# I'm a lumberjack, and I'm okay.
# I sleep all night and I work all day.
  1. Once you have defined a function, you can use it inside another function.For example, to repeat the previous refrain, we could write a function called repeat_lyrics:(当你定义了一个函数之后,你可以将它用在其他自定义函数体之内。 )
def repeat_lyrics():
    print_lyrics()
    print_lyrics()    

repeat_lyrics()
# I'm a lumberjack, and I'm okay.
# I sleep all night and I work all day.
# I'm a lumberjack, and I'm okay.
# I sleep all night and I work all day.

五、 定义和使用

def print_lyrics():
    print("I'm a lumberjack, and I'm okay.")
    print('I sleep all night and I work all day.')

def repeat_lyrics():
    print_lyrics()
    print_lyrics()

repeat_lyrics()
  1. 函数体内里的语句序列,当这个函数没有被调用时不会运行。
  2. 调用函数前一定要先定义。

六、执行流程

  1. 为了确保函数被调用前已经被定义,我们必须要先搞清楚表达式执行的顺序。
  • 执行程序都是通过第一个表达式开始的。每个语句都将被从上到下执行一次。
  • 定义函数不会影响执行流程。 没有调用的函数体内的表达式不会被执行。
  • 当函数被调用时,执行步骤将会跳入该函数体内,并将所有的表达式执行完毕之后,继续跳进入之前的步骤。

七 、 形参 和 实参 (parameters and arguments)

我们之前已经见过有些自建函数需要传入参数。例如,math.sin()我们需要将角度的值放置到括号中。math.pow()需要两个参数。

  1. 在函数体内,参数被分配给变量叫做—-形参
  2. 当参数是在调用函数前被定义的叫做—-实参 ```python

    这个案例中bruce 仅仅是函数体内使用的参数形式, 这种参数叫做—形参

    def print_twice(bruce): print(bruce) print(bruce)

print_twice(‘spam’)

print_twice(17)

import math print_twice(math.pi)

```python
#这里的micheal 是在整个程序运行过程定义的一变量,被自定义函数调用前已经定义,这种形式的参数叫--实参
micheal =  'Eric , the half a bee'

print_twice(micheal)

# Eric , the half a bee
# Eric , the half a bee

八、 有返回的函数和无返回值的函数(Fruitful Functions and void function

  1. 产出结果的函数—有返回值的函数。例如:math.sqrt() ```python

    当调用有返回值的函数时,都将会得到一个结果

x = math.cos(radians) golden = (math.sqrt(5)+1) /2

当我们调用该函数时会直接展示结果

math.sqrt(5)

2.23606797749979


2. 没有返回值的函数-会展示某些结果在屏幕中或者有其他的影响,但是他们不会返回value。例如: print_twice()
```python
reslut = print_twice('Bing')

#Bing
#Bing 

print(result) 
None
  1. 想要创建有返回值的函数,需要用到return表达式。 ```python def add_two(a,b): sum = a + b return sum

x = add_two(2,4) print(x)

6

```

九、 为何需要函数

  1. 创建一个函数会提供一个自己命名和编辑表达式序列的机会,让你的程序更容易被阅读、理解和调错。
  2. 函数会减少你的程序中的重复代码,当你之后要对该部分进行修改时,只需要修改函数体内的部分即可完成。
  3. 用自定义函数的形式分割你较大的程序会让你调错过程只需要将该部分内容修改即可达到整体调试的效果。
  4. 设计良好的自定义函数往往会被其他程序所调用,只需要编写和修改一次即可。

十、 练习题

  1. 创建一个自定义函数

def computegrade():

scroe grade
0.9 A
0.8 B
0.7 C
0.6 D
< = 0.6 F