这是一个广泛的问题.
当我发现自己必须编写更长更长的脚本时,我发现我的直觉是将所有东西都分解成一口大小的函数; 然而,这最终导致函数调用函数调用函数调用函数....我想知道我是否完全在想错误的方法.
这是删节脚本的样子.对不起,这是一种做作.
def simple_task_1():
return
def simple_task_2():
return
def simple_task_3():
return
def simple_task_4():
return
def complex_task_1():
simple_task_2()
simple_task_3()
simple_task_4()
return
def startup():
simple_task_1()
complex_task_1()
simple_task_4()
def finish():
# other function calls
return
def main():
startup()
finish()
Run Code Online (Sandbox Code Playgroud)
那么,这是使用函数的正确方法吗?有没有一个客观的观点,你可以说你在彼此内部进行了太多的函数调用?我是否应该为只完成一次的任务制作函数?
我正在搞乱Pygame,制作一些简单的游戏只是为了学习它.但是,我很难以我想要的方式实现fps.
根据我的理解,fps通常设置为:
import pygame
...
clock = pygame.time.Clock()
while True:
clock.tick(60)
Run Code Online (Sandbox Code Playgroud)
然后在整个程序中,我确保每个循环/帧被写入需要1/60秒,所以我可以,例如,让对象以我想要的速度移动.将刻度增加到120 fps将使游戏运行得太快,而减少它会使游戏运行得太慢.
然而,这并不是我熟悉fps为任何其他游戏工作的方式.在大多数游戏中,fps可以根据需要变化(通常基于系统运行应用程序的程度),但游戏总是以相同的速度运行(例如,在屏幕上移动100个像素将花费1秒钟,无论如何在那一秒发生了多少帧).
我能想到让它按照我想要的方式工作的唯一方法是每帧捕获当前的fps,并将其计入每个基于运动或时间的事件的计算中.但这似乎是不必要的复杂,我想知道我是否完全错过了pygame功能的一部分,这对我来说是有用的.
完整脚本:https://gist.github.com/4476526
有问题的具体代码是
# Cloud Files username & API key
username = ''
key = ''
# Source and destination container names
originContainerName = ''
targetContainerName = ''
...
def cloudConnect():
global originContainer
global targetContainer
global connection
print "Creating connection"
connection = cloudfiles.get_connection(username,key,servicenet=True)
print "-- [DONE]"
print "Accessing containers"
originContainer = connection.create_container(originContainerName)
targetContainer = connection.create_container(targetContainerName)
print "-- [DONE]"
return
Run Code Online (Sandbox Code Playgroud)
该脚本工作得非常好,但是我已经在多个地方读过全局变量应该犹豫不决的使用,并且几乎总有一种更好的方法可以在没有它们的情况下做同样的事情.这是真的?如果是这样,我应该如何修复此脚本?对我来说,使用全局连接和容器变量似乎更容易,而不是将这些对象作为参数传递给多个函数.