其他分享
首页 > 其他分享> > 第4章——函数

第4章——函数

作者:互联网

第4章——函数

1.什么是函数

1.1函数的基本概念

  1. 一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。
  2. 函数是代码复用的通用机制。

1.2函数的定义和调用

Python 中,定义函数的语法如下:值得注意的是

def 函数名 ([参数列表]) :
	'''文档字符串'''
	函数体/若干语句

# this one is like your scripts with argv
def print_two(*args):
     arg1, arg2 = args #函数相关的代码行前面加上四个空格的缩进
     print(f"arg1: {arg1}, arg2: {arg2}")

# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2):
 print(f"arg1: {arg1}, arg2: {arg2}")

# this just takes one argument
def print_one(arg1):
     print(f"arg1: {arg1}")

# this one takes no arguments
def print_none():
     print("I got nothin'.")

print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()

程序结果:

arg1: Zed, arg2: Shaw
arg1: Zed, arg2: Shaw
arg1: First!
I got nothing.

2.函数和变量

下面是给函数 cheese_and_crackers 赋值的几种不同的方式

def cheese_and_crackers(cheese_count, boxes_of_crackers):
    print(f"You have {cheese_count} cheeses!")
    print(f"You have {boxes_of_crackers} boxes of crackers!")
    print("Man that's enough for a party!")
    print("Get a blanket.\n")

print("We can just give the function numbers directly:")
cheese_and_crackers(20, 30)

print("OR, we can use variables from our script:")
amount_of_cheese = 10
amount_of_crackers = 50
cheese_and_crackers(amount_of_cheese, amount_of_crackers)

print("We can even do math inside too:")
cheese_and_crackers(10 + 20, 5 + 6)

print("And we can combine the two, variables and math:")
cheese_and_crackers(amount_of_cheese + 100, amount_of_crackers + 1000)

输出结果:

We can just give the function numbers directly:
You have 20 cheeses!
You have 30 boxes of crackers!
Man that's enough for a party!
Get a blanket.

OR, we can use variables from our script:
You have 10 cheeses!
You have 50 boxes of crackers!
Man that's enough for a party!
Get a blanket.

We can even do math inside too:
You have 30 cheeses!
You have 11 boxes of crackers!
Man that's enough for a party!
Get a blanket.

And we can combine the two, variables and math:
You have 110 cheeses!
You have 1050 boxes of crackers!
Man that's enough for a party!
Get a blanket.

3.函数和文件

函数是可以和文件一起工作并发挥一些作用的。

在开始前,编辑传入的参数文件,这里为text1.txt,里面的内容为
在这里插入图片描述
之后运行代码

from sys import argv
script, input_file = argv

def print_all(f):
    print(f.read())  #输出文件内容

def rewind(f):    #移动文件读取指针到指定位置,即头部
    f.seek(0)

def print_a_line(line_count, f):  #输出当前行号的文件内容
    print(line_count, f.readline())

current_file = open(input_file)
print("First let's print the whole file:\n")

print_all(current_file)
print("Now let's rewind, kind of like a tape.")

rewind(current_file)

print("Let's print three lines:")

current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)

代码运行结果

First let's print the whole file:

This is line 1
This is line 2
This is line 3
Now let's rewind, kind of like a tape.
Let's print three lines:
1 This is line 1

2 This is line 2

3 This is line 3

4.函数可以返回一些东西

= 和一个新的 python 字符 return 来把函数中的变量设置为一个值

def add(a, b):
    print(f"ADDING {a} + {b}")
    return a + b

def subtract(a, b):
    print(f"SUBTRACTING {a} - {b}")
    return a - b

def multiply(a, b):
    print(f"MULTIPLYING {a} * {b}")
    return a * b

def divide(a, b):
    print(f"DIVIDING {a} / {b}")
    return a / b

print("Let's do some math with just functions!")

age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)

print(f"Age: {age}, Height: {height}, Weight: {weight}, IQ: {iq}")


# A puzzle for the extra credit, type it in anyway.
print("Here is a puzzle.")

what = add(age, subtract(height, multiply(weight, divide(iq, 2))))  #这里面嵌套函数

print("That becomes: ", what, "Can you do it by hand?")
Let's do some math with just functions!
ADDING 30 + 5
SUBTRACTING 78 - 4
MULTIPLYING 90 * 2
DIVIDING 100 / 2
Age: 35, Height: 74, Weight: 180, IQ: 50.0
Here is a puzzle.
DIVIDING 50.0 / 2
MULTIPLYING 180 * 25.0
SUBTRACTING 74 - 4500.0
ADDING 35 + -4426.0
That becomes:  -4391.0 Can you do it by hand?

注:

  1. python 是从里到外(inside out)来打印函数的
what = add(age, subtract(height, multiply(weight, divide(iq, 2))))

2.int(input())不能输入浮点数,可以用 float(input())来代替。

标签:函数,arg1,current,print,crackers,line,def
来源: https://blog.csdn.net/qq_42258383/article/details/123123605