Python学习笔记(3)用户输入&函数

Chapter 7

用户输入input()

  • input(字符串)让程序暂停,等待用户输入文本。其中,“字符串”是显示在屏幕上的输入提示信息。注意,在python2.7中,也有input(),但是它将用户输入的东西理解为Python代码,并尝试运行!此时,为了达到原来的目的,需要使用raw_input()
  • 创建多行字符串的方式。+=在原字符串的末尾添加一个字符串。
str = "First line."
str += "\nSecond line." 
  • input()将用户输入的东西,理解为字符串。即使输入数字,也理解为字符串。如果想使用数字,应当用int(数字字符串)来对获得的“数字字符串”进行转换,成为数字。
  • %求模运算符。将两数相除,返回余数。

while

  1. 注意:Python中没有自增(++),自减(–)。类似的工作由+= 1等完成。
  2. break语句,退出while循环、for循环。
  3. continue语句,忽略循环中continue下面的代码,回到循环的开头。
  4. 可以通过while多次使用.remove(元素)来删去列表中所有相应元素,而不仅仅只是第一个。

Chapter 8

函数

  • 例子
def greet_user(username):
    """显示简单的问候语"""
    print("Hello, " + username.title() + '!')

greet_user('jesse')

def关键词:表示定义了函数。
注意:定义以冒号结尾。
""" """,表示文档字符串的注释。用来生成有关程序中函数的文档。

  • 当一个函数有多个参数的时候,根据各个参数的顺序是否起作用,可以使用位置实参关键词实参
    • 位置实参,调用函数时,参数的顺序与定义函数时参数的顺序完全一致。
    • 关键词实参,在实参中,直接将名称和值相互关联起来,因此不用再担心顺序。

例如

def describe_pet(pet_type, pet_name):
    """显示宠物的信息"""
    print("I have a " + pet_type + ".")
    print("My " + pet_type + "'s name is " + pet_name.title() + ".")

#关键词实参
describe_pet(pet_name="harry", pet_type="hamster")

#位置实参
describe_pet("hamster", "harry")
  • 默认值
    类似于C++中的函数参数默认值。有默认值的参数,必须写在没有默认值的参数的后面。
def describe_pet(pet_name, pet_type="hamster"):
    """显示宠物的信息"""
    print("I have a " + pet_type + ".")
    print("My " + pet_type + "'s name is " + pet_name.title() + ".")

#第一种调用方法
describe_pet("harry")
#第二种调用方法
describe_pet(pet_name="harry")
  • 返回值
    类似于C++中的函数返回值。同样,在经历了第一个return之后,函数就会退出。
    另外,函数可以返回任何类型的值。比如,列表,字典等等。
  • 参数可以是列表等等。如果传入的是列表,那么,在函数中对列表所进行的所有修改都是永久性的。如果不希望函数对原来的列表本身进行修改,那么应该传入原来列表的副本,使用切片法。
function_name(list_name[:])
#这样传进去的是原来列表的副本
  • 传入任意数量的实参
    其原理是,传入一个元组(“不可更改的列表”)。注意,即使函数只收到一个值,其仍然会将该实参封装到元组中。
def make_pizza(*toppings):
    """用来接收原料和输出原料"""
    for topping in toppings:
        print("- " + topping)

make_pizza('potato','extra cheese')

注意:
1. *toppings星号加元组名,表示新建空元组。
2. 当需要混用位置实参和任意数量的实参时,应该将任意数量的实参放在最后。Python会先匹配位置实参和关键词实参,再将剩下的参数收集到最后一个形参中。

  • 传入任意数量的关键词实参
def build_profile(first, last, **user_info):
    """创建一个字典,其中包括我们所知道的关于用户的一切"""
    profile = {}
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items():
        profile[key] = value
    return profile

user_profile = build_profile('albert', 'einstein', location='princeton', field='physics')
print(user_profile)

注意:
1. location = 'princeton'的写法。
2. **user_info两个星号表示新建字典。

  • 将函数储存在模块中
    我们可以通过导入整个模块,或导入模块中的特定函数,来使用模块中的函数。两种方法有差别。

导入整个模块

#在同一文件夹下,还有pizza.py,其中有函数make_pizza。
import pizza #不加.py后缀

pizza.make_pizza('potato','extra cheese')

注意:
1. import 文件名 导入整个模块。注意,不加后缀.py
2. 在这种情况下,使用函数时,应当用点。模块名.函数名
3. 注意,“同一文件夹下”。

导入特定函数

from pizza import make_pizza

make_pizza('potato','extra cheese')

注意:
1. from 文件名 import 函数名导入模块中的特定函数。如果要导入多个函数,函数名之间用逗号隔开即可。
2. 在这种情况下,因为已经显式地导入了函数,因此,使用函数时,不用加点。函数名

导入模块中的所有函数

from pizza import *

注意:
1. 使用*来代替所有函数。
2. 这样一来,使用函数的时候,可以直接使用函数名,无需句点。然而,并不支持使用这种方法。因为当使用并非自己编写的大型模块时,模块中原有函数可能会与现有函数重名,从而发生覆盖等一系列意料之外的情况。最好的做法是,只导入需要的函数,或者导入整个模块并使用句点表示法。

  • 使用as指定别名
    如果导入模块中的函数名太长,或者和现有函数名存在冲突,则可以对其指定别名。
from pizza import make_pizza as mp

此后,便可以使用mp
同样地,也可以对模块指定别名。

import pizza as p

此后,便可使用p.函数名。注意,这种情况下,模块中所有函数名都没有变。

  • 格式
    给形参指定默认值时,等号两边不要留空格。调用函数时的关键词形参,也应遵守这种约定。
def function_name(parameter_0, parameter_1='default value')

function_name(value_0, parameter_1='value')

如果形参很多,可在函数定义中,输入左括号后按回车键,再在下一行按两次Tab键,从而将形参列表和只缩进一层的函数体区分开来。
如果代码包含多个函数,可使用两个空行把各个函数分开。
所有import语句都应放在文件开头,除非前面有注释。

猜你喜欢

转载自blog.csdn.net/twllx/article/details/75042762